舍入时 PHP 数字格式降为零
Posted
技术标签:
【中文标题】舍入时 PHP 数字格式降为零【英文标题】:PHP number format drops zero when rounding 【发布时间】:2012-08-13 22:31:09 【问题描述】:我使用 php 的 number_format 将浮点数显示到小数点后 2 位。
当数字大约为 1.898 时,它会四舍五入为 1.9。
如何让它显示为 1.90?
更新:
我有一个函数结束...
return number_formant($num, 2);
调用该函数的 php 脚本打印出 javascript 使用的数字。当我对数字执行 var_dump 时,它会正确打印两位小数。看起来是 Javascript 丢失了零。
这是导致问题的 JS 代码...
function show_level(level)
...
if (level > 9999)
level_label = (level / 1000).toPrecision(3) + 'k';
else if (level > 999)
level_label = (level / 1000).toPrecision(2) + 'k';
else
level_label = level;
我修改了最后一行,让它按我想要的方式工作..
level_label = level.toFixed(2);
【问题讨论】:
但是,它就是这样打印的。之后您可能不会立即写出字符串。揭示你的代码。 “当数字大约是 1.898 时,它会向上舍入到 1.9”。不,那不是真的。 明确使用 1 表示小数而不是 2,默认为 0,因此输出将为“2” 如果你必须将它用于货币,你也可以使用:string money_format(string $format,float $number)it2.php.net/manual/en/function.money-format.php 现在能贴出相关的JS代码吗?谢谢。 【参考方案1】:也许不是最好的解决方案,但是:
$n = 1.2345;
$n = number_format( round($n, 1), 2);
//echo 1.20
echo $n;
【讨论】:
这将导致舍入/精度错误。四舍五入时显示 2 位小数是不好的形式。 这就是问题提出的(首先)然后编辑的内容。【参考方案2】:所以, 你的意思是这样的(你有什么):
<?php
echo number_format($x);
?>
这就是你想要的:
<?php
echo number_format($x,2);
?>
您可以使用其他长度。试试看!
希望能帮到你 :)
【讨论】:
【参考方案3】:echo sprintf('%01.2f', number_format(1.898,2))
【讨论】:
Psst:sprintf
也有 %f
。 ;)【参考方案4】:
你可以这样做:
echo round(1.898,2);
【讨论】:
以上是关于舍入时 PHP 数字格式降为零的主要内容,如果未能解决你的问题,请参考以下文章