PHP round()返回意外值

PHP round()返回意外值,php,math,rounding,Php,Math,Rounding,我有一个2.6647的双精度值,我正在尝试将它四舍五入到小数点后2位 我期望返回值为2.67 7(小数点后最后一位)应将4(小数点后第二位)四舍五入至5,5应将6(小数点后第三位)四舍五入至7 但我得到的是2.66分。为什么会这样 PHP版本是5.3.28 47

我有一个2.6647的双精度值,我正在尝试将它四舍五入到小数点后2位

我期望返回值为2.67

7(小数点后最后一位)应将4(小数点后第二位)四舍五入至5,5应将6(小数点后第三位)四舍五入至7

但我得到的是2.66分。为什么会这样

PHP版本是5.3.28

47<50

因此,无论最后一个参数是什么,2.6647都将四舍五入到2.66

47<50

因此,无论最后一个参数是什么,2.6647都将四舍五入到2.66

47<50

因此,无论最后一个参数是什么,2.6647都将四舍五入到2.66

47<50


因此,无论最后一个参数是什么,2.6647都将四舍五入到2.66

四舍五入到
n
小数是由
n+1
th小数驱动的。在这种情况下,第三个小数点是4,因此数字被四舍五入到
2.66

四舍五入到
n
小数点由
n+1
第四个小数点驱动。在这种情况下,第三个小数点是4,因此数字被四舍五入到
2.66

四舍五入到
n
小数点由
n+1
第四个小数点驱动。在这种情况下,第三个小数点是4,因此数字被四舍五入到
2.66

四舍五入到
n
小数点由
n+1
第四个小数点驱动。在这种情况下,第三个小数点是4,因此数字被四舍五入到
2.66

您误解了
round()
的工作原理:

“7(小数点后最后一位)应将4(小数点后第二位)四舍五入至5,5应将6(小数点后第三位)四舍五入至7。”

这是不正确的

round()
只考虑指定小数点后的数字。因此,在本例中,根本不考虑7。仅考虑4,该值小于5,决定将数字四舍五入为2.66

要获得上面引用中指定的逻辑,您需要执行以下操作:

$value = 2.6647;
$value2 = round( $value, 3, PHP_ROUND_HALF_UP ); // 2.665
echo round( $value2, 2, PHP_ROUND_HALF_UP ); // 2.67

这可能不是一种非常可行的方法,但应该可以更好地了解
round()
的工作原理。

您误解了
round()
的工作原理:

“7(小数点后最后一位)应将4(小数点后第二位)四舍五入至5,5应将6(小数点后第三位)四舍五入至7。”

这是不正确的

round()
只考虑指定小数点后的数字。因此,在本例中,根本不考虑7。仅考虑4,该值小于5,决定将数字四舍五入为2.66

要获得上面引用中指定的逻辑,您需要执行以下操作:

$value = 2.6647;
$value2 = round( $value, 3, PHP_ROUND_HALF_UP ); // 2.665
echo round( $value2, 2, PHP_ROUND_HALF_UP ); // 2.67

这可能不是一种非常可行的方法,但应该可以更好地了解
round()
的工作原理。

您误解了
round()
的工作原理:

“7(小数点后最后一位)应将4(小数点后第二位)四舍五入至5,5应将6(小数点后第三位)四舍五入至7。”

这是不正确的

round()
只考虑指定小数点后的数字。因此,在本例中,根本不考虑7。仅考虑4,该值小于5,决定将数字四舍五入为2.66

要获得上面引用中指定的逻辑,您需要执行以下操作:

$value = 2.6647;
$value2 = round( $value, 3, PHP_ROUND_HALF_UP ); // 2.665
echo round( $value2, 2, PHP_ROUND_HALF_UP ); // 2.67

这可能不是一种非常可行的方法,但应该可以更好地了解
round()
的工作原理。

您误解了
round()
的工作原理:

“7(小数点后最后一位)应将4(小数点后第二位)四舍五入至5,5应将6(小数点后第三位)四舍五入至7。”

这是不正确的

round()
只考虑指定小数点后的数字。因此,在本例中,根本不考虑7。仅考虑4,该值小于5,决定将数字四舍五入为2.66

要获得上面引用中指定的逻辑,您需要执行以下操作:

$value = 2.6647;
$value2 = round( $value, 3, PHP_ROUND_HALF_UP ); // 2.665
echo round( $value2, 2, PHP_ROUND_HALF_UP ); // 2.67

这可能不是一种非常可行的方法,但应该可以更好地了解
round()
是如何工作的。

请查看此

轮中功能

echo round(2.6647, 2);  // 2.66
echo round(2.6637, 2);  // 2.66
echo round(2.6657, 2);  // 2.67
echo round(2.6667, 2);  // 2.67

如果小数点后第三位是5或大于5,则在第二位增加一位。

请查看此项

轮中功能

echo round(2.6647, 2);  // 2.66
echo round(2.6637, 2);  // 2.66
echo round(2.6657, 2);  // 2.67
echo round(2.6667, 2);  // 2.67

如果小数点后第三位是5或大于5,则在第二位增加一位。

请查看此项

轮中功能

echo round(2.6647, 2);  // 2.66
echo round(2.6637, 2);  // 2.66
echo round(2.6657, 2);  // 2.67
echo round(2.6667, 2);  // 2.67

如果小数点后第三位是5或大于5,则在第二位增加一位。

请查看此项

轮中功能

echo round(2.6647, 2);  // 2.66
echo round(2.6637, 2);  // 2.66
echo round(2.6657, 2);  // 2.67
echo round(2.6667, 2);  // 2.67
如果小数点后第三位是5或大于5,则在第二位增加一位。

PHP运行良好。您误解了
round()
function.PHP的工作原理。您误解了
round()
function.PHP的工作原理。您误解了
round()
function.PHP的工作原理。您将
round()
函数+1误解为“不考虑最后一个参数”。OP可能误解了
PHP\u ROUND\u HALF\u UP
选项+1表示“不考虑最后一个参数”。OP可能误解了
PHP\u ROUND\u HALF\u UP
选项+1表示“不考虑最后一个参数”。OP可能误解了
PHP\u ROUND\u HALF\u UP
选项+1表示“不考虑最后一个参数”。OP可能误解了
PHP\u ROUND\u HALF\u UP
选项。