我在PHP中有两个数字。 81.0000和81.虽然它们在现实中是平等的但我不能在PHP中使它们相等。
我已经尝试将这两个数字投射到浮动状态,但它们仍然不会被认为是平等的。
任何人都知道我怎么能让这两个数字相同?
答案 0 :(得分:5)
在php.net上查看真棒WARNING:
永远不会将浮点数结果信任到最后一位,并且永远不会将浮点数与相等性进行比较。
最好的方法是输入(int)
,或使用PHP舍入函数,如round()
,floor()
或ceil()
。
<强>更新强>
查看Arbitrary Precision Math Functions,例如@Jose Vega在答案中指出的那个。他们应该把你带到你需要去的地方。
答案 1 :(得分:3)
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
?>