我在PHP中有两个数字。 81.0000和81.虽然他们在现实中是平等的,但我无法让他们在PHP中平等。在PHP中有相同数字的不同格式
我试图铸造两个数字飘起,他们仍然不会来思想为相等。
任何人有任何想法,我怎么能有这两个数字是一样的吗?
我在PHP中有两个数字。 81.0000和81.虽然他们在现实中是平等的,但我无法让他们在PHP中平等。在PHP中有相同数字的不同格式
我试图铸造两个数字飘起,他们仍然不会来思想为相等。
任何人有任何想法,我怎么能有这两个数字是一样的吗?
检查出php.net的真棒WARNING:
永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
最好的你可以是类型转换为(int)
,或使用PHP四舍五入功能,如round()
,floor()
,或者ceil()
。
UPDATE
检查出这样Arbitrary Precision Math Functions一个@Jose维加在他的回答中指出。他们应该把你带到你需要去的地方。
+1非常非常真实。 :-) – 2010-12-07 19:14:05
bccomp - 比较两个任意精度数
bccomp (string $left_operand , string $right_operand [, int $scale ])
<?php
echo bccomp('1', '2') . "\n"; // -1
echo bccomp('1.00001', '1', 3); // 0
echo bccomp('1.00001', '1', 5); // 1
?>
您可以包括一些示例代码? `php> echo 81.0000 == 81;`对我来说是真的 – baloo 2010-12-07 19:06:02
你用`===`来检查吗? – RSK 2010-12-07 19:10:27