C语言中 double数字 以浮点输出小数后面全部变为零的问题
C语言中 double数字 以浮点输出小数后面全部变为零的问题
日期:2011-10-15 21:28:34 人气:2
计算机内部保留的数值,精度是有限的。不同的C语言版本可能有不同。
常见的某些版本中,情况如下(其中的“位”指二进制的位):
float型:8位阶码,24位尾数;
double型:8位阶码,56位尾数。
阶码是用来表示小数点位置的,尾数则是表示有效数字的值。故double型有效数字最多保留56位。
故这种情况下,最低位的分辨能力,只能达到整个量程的2的56次方分之一。
如果数据本身,有更低位的小数,就只能舍入近似了。
而且我们知道,尾数还有正负两种可能,故其绝对值的最大值,只能达到整个