似乎每个人在使用printf格式化浮点数时都使用6个字符的默认精度。
为什么是6?
这是在32位浮点数被广泛使用之前出现的吗?
发布于 2015-08-20 20:24:54
根据Wikipedia的说法,32位浮点数的常见IEEE754表示法的精度约为7位十进制数字。因此,6看起来是一个合理的值。
您需要双精度(64位)才能获得大约16位十进制数字。
发布于 2015-08-20 20:36:04
嗯,不,这并不是在32位浮点数被广泛使用之前。最早的浮点表示法--远在IEEE规范出现之前--是32位(或大约32位),因此在此之前没有输出浮点值的“默认精度”。
无论如何,对于32位浮点类型,有效数或尾数的典型大小是20到25位(IEEE 32位浮点数具有24位的有效数),其计算出表示最大精度的四到七个有效十进制数。(24*log(2)
大致等于7.2
)。
典型的64位浮点表示具有介于50和55位之间的有效数(64位IEEE表示具有53位有效数),其计算出表示最大精度的大约15个小数位。
这意味着程序员通常默认输出小数点后5到6位的浮点值。较低的精度将截断数值(增加打印输出并重新读入数值所产生的误差),而较高的精度将倾向于输出“噪声”(小数点后更远的散乱数字,这会影响人类的可读性,并且对写入/读取往返没有太大帮助)。
https://stackoverflow.com/questions/32117254
复制相似问题