php周围的函数无法正常工作
php函数php周围的函数无法正常工作,php,rounding,Php,Rounding,php函数round工作不正常。 我有编号0.9950。 我把代码: $num = round("0.9950", 2); 我得到1.0分?为什么?为什么我不能得到0.99?当你把0.9950四舍五入到两位小数时,你得到1.00,因为这就是四舍五入的工作原理。如果您想要一个将导致0.99的操作,那么您可能正在寻找浮点截断。将浮点数截断为小数点后两位的一种方法是乘以100,转换为整数,然后再除以100: $num = "0.9950"; $output = (int)(100*$num) / 1
round
工作不正常。
我有编号0.9950
。
我把代码:
$num = round("0.9950", 2);
我得到1.0分?为什么?为什么我不能得到0.99
?当你把0.9950
四舍五入到两位小数时,你得到1.00
,因为这就是四舍五入的工作原理。如果您想要一个将导致0.99
的操作,那么您可能正在寻找浮点截断。将浮点数截断为小数点后两位的一种方法是乘以100,转换为整数,然后再除以100:
$num = "0.9950";
$output = (int)(100*$num) / 100;
echo $output;
0.99
这个技巧之所以有效,是因为在第一步之后0.9950
变成99.50
,当转换为整数时,它只变成99
,丢弃原始数字第二位小数后的所有内容。然后,我们再次除以100
以恢复原始数字,减去我们想要截断的数字
您可以向函数中添加第三个参数,使其执行所需的操作。 您必须从以下选项中进行选择:
- PHP四舍五入
- PHP四舍五入
- PHP_圆_半_偶数
- PHP_ROUND_HALF_奇数
<?php echo round("0.9950", 2, PHP_ROUND_HALF_DOWN); ?>
刚刚在。。。PHP有时看起来很有趣
查看第三个参数-mode如果要更改其行为,也可以使用floor()
而不是强制转换。在我的示例中,我只查看小数点后的前两位数字,但是casting并不总是像预期的那样工作……但是一些看起来像十进制的一半的东西可能一次也不能转换成二进制——请参阅感谢您提供的信息,我正在研究这个主题,但是这段代码似乎处理一些无法用二进制表示的“已知”浮点数(0.1、0.2、0.7等)及其加法(例如,四舍五入0.1+0.2)。