Php 尝试用两位小数显示数字时,数字\格式和sprintf出现意外结果
我有一个计算,返回这个Php 尝试用两位小数显示数字时,数字\格式和sprintf出现意外结果,php,printf,number-formatting,Php,Printf,Number Formatting,我有一个计算,返回这个双精度:6.4971508379888。如果我将它转换为一个浮点值,并回显它,它就是同一个数字。我想用两位小数显示(而不是四舍五入)数字,因此我尝试: number_format((float)$number, 2, '.', '') 及 但在这两种情况下,我看到的都是6.50而不是6.49。为什么会这样 PHP会根据给定的精度自动对值进行四舍五入 如果希望得到预期结果,请遵循以下代码 $precision = 2; $number = floor($number * p
双精度:6.4971508379888。如果我将它转换为一个浮点值
,并回显它,它就是同一个数字。我想用两位小数显示(而不是四舍五入)数字,因此我尝试:
number_format((float)$number, 2, '.', '')
及
但在这两种情况下,我看到的都是6.50而不是6.49。为什么会这样
PHP会根据给定的精度自动对值进行四舍五入
如果希望得到预期结果,请遵循以下代码
$precision = 2;
$number = floor($number * pow(10,$precision))/pow(10,$precision);
echo number_format((float)$number, $precision, '.', '');
谢谢,我就是这样解决的。我想知道为什么number_格式和sprintf是这样工作的。我刚刚发现数字形式显然是循环的,但它没有很好的文档记录。但对sprintf不确定?
$precision = 2;
$number = floor($number * pow(10,$precision))/pow(10,$precision);
echo number_format((float)$number, $precision, '.', '');