【问题标题】:Display numbers up to two decimals places without trailing zeros显示最多两位小数的数字,不带尾随零
【发布时间】:2012-04-18 18:37:57
【问题描述】:

在我的代码中,我将接受多个值,例如:

8.7456
8.7
8

我需要让它们显示为

8.74
8.7
8

即最多显示两位小数。

我知道.toFixed(2) 将帮助我处理第一个值,但在第二个和第三个值上会有我不想要的尾随零。

如何产生我想要的结果?

【问题讨论】:

    标签: javascript numbers parsefloat


    【解决方案1】:

    使用Number.toFixed 将数字四舍五入为两位数并格式化为字符串。然后使用String.replace 去掉尾随的零:

    [8.7456, 8.745, 8.74, 8.7, 8].forEach(function(num) {
      var str = num.toFixed(2).replace(/\.?0+$/, "");
      console.log(num, str);
    });

    【讨论】:

    • 好的好的,你知道了,没有更多的更新!我将您的第二次迭代更改为您在此处发布的内容(因为 8. 结果)感谢您的帮助!
    • 四舍五入没问题,我最初不想四舍五入,但事实证明我应该这样做。但是,如果您想发布一个如何在不四舍五入的情况下执行此操作的示例,我相信有人会在某个时候使用它
    【解决方案2】:

    乘以 100,floor,除以 100。

    var n = 8.7456;
    var result = Math.floor(n * 100) / 100; // 8.74
    

    编辑:如果你事后才看这个问题,这可能不是你想要的。它满足了将8.7456 显示为8.74 的奇怪要求。另见the relevant comment

    【讨论】:

    • 好吧,也许我的电脑是“特殊的”,但如果 n 是 8.7,这个计算会返回 8.69。想法?
    • 显然,对于 JS,8.7 * 100 是 869.99999999。这么简单的事情怎么会搞砸?
    • 浮点运算不精确,时不时会遇到舍入错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多