#include<stdio.h>
void main()
{
float num;
double dnum;
num=563.23;
dnum=78954327.07;
printf("num=%f",num);
printf("\ndnum=%lf",dnum);
}
执行结果:
num=563.229980
dnum=78954327.0700000
我想请问如上题,书上写float单精度浮点型提供7个有效数字,而double双精度浮点型提供15到16位有效数字。那怎么输出结果会是这样?位数是不是多了?请知道的大侠们帮帮忙,小女子先谢过了~
这里有个概念要搞清楚,精度和输出小数点后多少位不是一回事。精度是说某种类型的浮点数在C中计算时有多少位是有效的,这实际上是包括整数部分的,但不包括小数点那一位;而输出小数点后多少位是由输出函数printf中的控制字符串确定的。float的精度是6到7位,就是说连整数部分有6位是可信的,再长了就是机器垃圾值了;double有16到17位是可信的,再多了也是机器垃圾值。下面的代码可说明这一问题。
float型x的值从第8位2开始就是垃圾值了,尽管要求输出小数点后10位;double型y的值从第18位起也是垃圾值,尽管要注输出了小数点后20位——这里全是0是碰巧,绝大多数情况下是乱七八糟的机器值。
C语言中浮点数float和double输出的问题
float的精度是6到7位,就是说连整数部分有6位是可信的,再长了就是机器垃圾值了;double有16到17位是可信的,再多了也是机器垃圾值。下面的代码可说明这一问题。float型x的值从第8位2开始就是垃圾值了,尽管要求输出小数点后10位;double型y的值从第18位起也是垃圾值,尽管要注输出了小数点后20...
c语言中double、 float怎么输出?
1、双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。 例如:printf("%lf\\n",x);2、short 占用内存空间2个字节,短整型数据用%d输出 例如:printf("%d\\n",a);例如:include <stdio.h> int main(){double x;sh...
c语言中float与double有什么区别?
在C语言中,float与double是两种用于存储浮点数的类型。它们之间最主要的差异在于内存占用量以及能够表示的数值精度。float类型使用4字节的内存来存储数据,而double类型则需要8字节。这使得double类型能够表示更高精度和更宽范围的数值。实际上,double类型的精度大约是float类型的两倍。举个例子,对于数值1.9...
c语言中double、 float怎么输出?
1.双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。 例如:printf("%lf\\n",x);2.short 占用内存空间2个字节,短整型数据用%d输出 例如:printf("%d\\n",a);例:include <stdio.h> int main(){double x;short...
c语言float和double保留小数点后几位
c语言float和double保留小数点后6位。C语言中,输出double类型(双精度实型)以及float类型(单精度实型)时,默认输出6位小数(不足六位以0补齐,超过六位按四舍五入截断)。如果想小数点后面16位,写成%.16lf,不会自动四舍五入的,double是一个近似值,通常没有办法做的很精确。通常能精确到小数点...
C语言 double;float输出精度问题求解
在C\/C++中,浮点型float用32位二进制表示,十进制有效数位为7位;double用64位二进制表示,十进制有效数位为16位。值得注意的是,无论 float还是double型,在机内都是按double运算的,区别只在输出时的有效位数不同。当一个数的实际长度不足要求的位数时,计算机会自动补足——但通常是一个随机数而...
关于C语言中double型输出的问题
f格式化命令,float,double 默认只输出6位小数。但是float,double可以表示的浮点数范围及精度是不同的。例如1653 float a = 1.123456;float b = 1.12345679;例如:ble占8字节 对应的格式为%lf float占4字节 对应的格式为%f 当两个格式用反时,会造成程序读取数据并赋值时1653,赋值给变量时字节...
c语言中double和float有什么区别?
C语言中,float和double都属于浮点数。区别在于:double所表示的范围,整数部分范围大于float,小数部分,精度也高于float。例如圆周率3.1415926535这个数字,如果用float来表示,最多只能精确到小数点后面的6位。而double大约能精确到小数点后面的15位左右,具体精确到几位,跟所用的编译器有关,但是各个编辑...
c语言float和double的问题
额double 不是常整型 是双精度浮点型 而float是单精度的 出来的double有小数是很正常的 至于常整型 不知道是不是楼主打错了 如果是长整型 那应该是 long 如果是常量整型 c中没有这个定义 与其相近的是 const int 是只读整型 或者宏定义 #define 但是宏就不存在什么型了 ...
C语言float类型储存和printf输出问题
原因就是,你使用了lf输出,其实是将float x转换为一个double输出了。相当于 double y = x;,然后输出y,这样后面的数值其实是因为一个4位浮点数给8位浮点数赋值的时候,将x的真实存储以double的精度显示出来了。具体的说,这涉及float的二进制保存方式,如果你有兴趣,可以看看基础语法书上关于float...