浮点精度:仔细观察
围绕浮点精度的常见误解(通常表示为固定的十进制位数)是不准确的。 浮点数在表示形式和算术上与十进制数有根本的不同。
二进制表示和精度
浮点数采用二进制格式,使用位而不是十进制数字。 精度由分配给有效数(尾数)的位数决定,定义了可表示的最小值变化 - 分辨率。 然而,准确度是指表示值与真实值的接近程度。
挑战 6-9 位数字的主张
经常引用的 MSDN 声称的 6-9 位精度具有误导性。 浮点精度不固定;表示的准确性根据数字的大小和小数结构而有很大差异。
数字大小和表示
大数字,尤其是那些容易表示为 2 的幂的数字,可以精确地表示。 相反,较小的数字在从十进制转换为二进制的过程中可能会出现严重的错误。 例如,由于浮点表示的限制,“999999.97”可能会四舍五入为“1,000,000”。
6-9 位经验法则的起源
“6-9 位数字”准则源于以下观察:
但是,这些观察结果并不能真实反映浮点格式的固有精度或准确性。
总结
要准确理解浮点运算,必须承认其二进制性质并放弃固定十进制精度的概念。 实际精度和准确度很大程度上取决于所涉及的具体数字。
以上是编程中的浮点类型精度到底有多准确?的详细内容。更多信息请关注PHP中文网其他相关文章!