所以我得到了这个:
$n = "19.99";
echo (int) ($n * 100);
echo (int) strval($n * 100);
这将输出以下内容:
1998
1999
我就是不明白。发生了什么?$n * 100
是1999 (浮点数),为什么它们不一样?
发布于 2010-12-25 21:04:25
浮点数没有任意的精度。19.99 * 100
的结果实际上表示为1998.9999999999
。
如果打印出来,它会显示为1999
。这就是strval()所做的。而(int)将把它降到最低。
发布于 2010-12-25 21:09:24
还可以检查...
http://php.net/manual/en/function.ceil.php
http://php.net/manual/en/function.floor.php
http://php.net/manual/en/function.round.php
您将看到一切是如何工作的。
echo round(9.5, 0, PHP_ROUND_HALF_UP); // 10
echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9
echo round(9.5, 0, PHP_ROUND_HALF_EVEN); // 10
echo round(9.5, 0, PHP_ROUND_HALF_ODD); // 9
echo round(8.5, 0, PHP_ROUND_HALF_UP); // 9
echo round(8.5, 0, PHP_ROUND_HALF_DOWN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_EVEN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_ODD); // 9
https://stackoverflow.com/questions/4530324
复制相似问题