double的有效位不是16位么

来源:百度知道 编辑:UC知道 时间:2024/06/21 18:56:02
double d = 3.4389387723515; printf("%f",d);
为什么输出结果有效位是7位,书上说double变量的有效位是16位啊?
可能我提问有歧义!

我要问double的有效数字是16位,为什么输出结果是7位!不是说的二进制位数!

谢谢大家!

有位位是16.小数点却一般只输出6位。。。默认的

晕 你怎么能这样理解呢
那int也是16位呢 为什么只有-32678---32677的范围
16位是说的2进制16位 比如
0000 1000 0000 0000 表示2048 这样表示的
并不是说有效位是16位 理解错误
你先去了解下二进制吧
二进制只有0和1

double对应的格式控制符%lf,这样输出才会有16位有效数字,float对应的格式控制符才是%f,有效位是7位,虽然在程序运行上,不会报错,但会影响精度,特别要注意的是在scanf()中,double对应的只能是%lf,float对应的只能是%f,int对应的只能是%d,经常犯错的就是在scanf()中把double对应的格式控制符写成%f,最后运行程序,结果不对,找半天也找不出错误

16位是说double的模是2的16次方,所谓小数点后有效长度为系统默认的,我记得是6位,原来有第7位的就四舍五入,确定第6位的值。