C语言中 double数字 以浮点输出小数后面全部变为零的问题

如题所述

计算机内部保留的数值,精度是有限的。不同的C语言版本可能有不同。
常见的某些版本中,情况如下(其中的“位”指二进制的位):
float型:8位阶码,24位尾数;
double型:8位阶码,56位尾数。
阶码是用来表示小数点位置的,尾数则是表示有效数字的值。故double型有效数字最多保留56位。
故这种情况下,最低位的分辨能力,只能达到整个量程的2的56次方分之一。
如果数据本身,有更低位的小数,就只能舍入近似了。
而且我们知道,尾数还有正负两种可能,故其绝对值的最大值,只能达到整个量程的一半。
更何况,绝对值不见得能达到最大(规格化后可以不小于最大值的一半)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-04
是因为你的b值位数太多了,把你的b值修改成位数少一些,如1234567890.123456,就不会有问题了!