【发布时间】:2013-07-31 16:46:27
【问题描述】:
为我糟糕的数学技能道歉,我试图理解这一点来回答我自己的问题,但我不相信。
我们都知道 PHP 不以 10 为基数存储浮点数,而是以 2 为基数存储。
我有一系列使用 0.5 作为唯一浮点数的计算,并试图了解它们是否将存储为 0.500001 或 0.4999999(出于舍入目的,存在很大差异!!!)我已经明白0.5 将精确存储在 base2 中。
我的查询是
A 我是否理解正确?
B 还有哪些浮点数精确地存储在 base2 中?例如 0.25?
【问题讨论】:
-
意味着您必须在数据库中存储 0.4999999 之类的数据?
-
@liyakat,和我的数据库无关,是php存储变量的问题
-
任何1/2的倍数都可以准确表示。所以 .25 很好,因为它是一半的一半。
-
gmp 是一个很好的库,用于更高的精度数
-
@orangepill,谢谢,把它放在答案中,我会接受,如果你可以扩展并说出 n/8、n/16 等是否会给出精确的浮点数?
标签: php floating-point