舍入时 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 数字格式降为零的主要内容,如果未能解决你的问题,请参考以下文章

如何在c#中对以空格分隔的数字进行舍入?

数以百万计的字符串格式,四舍五入的数以千计

C#格式化输出和数值舍入

均值舍入为零的子数组的数量

在C中除以整数将值向下舍入/结果为零

自定义数字格式字符串始终显示符号