Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试用两位小数显示数字时,数字\格式和sprintf出现意外结果_Php_Printf_Number Formatting - Fatal编程技术网

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, '.', '');