【问题标题】:PHP number format drops zero when rounding舍入时 PHP 数字格式降为零
【发布时间】: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代码吗?谢谢。

标签: php jquery number-formatting


【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      相关资源
      最近更新 更多