【问题标题】:JavaScript Number.toLocaleString() with 4 digits after separatorJavaScript Number.toLocaleString() 分隔符后有 4 位数字
【发布时间】:2020-07-16 05:44:58
【问题描述】:

有没有办法获得逗号后 4 位数字的number.toLocaleString()?

例子:

var number = 49.9712;
document.getElementById('id').innerText = number.toLocaleString();

结果: 49,9712

但现在它总是返回逗号后 2 位的数字: 49,97

【问题讨论】:

  • 24.3243.toLocaleString(); --> "24,324",对我来说,在最新的 Chrome 中。
  • 这取决于文化设置...但我需要 4 位数字,伙计。
  • 我必须使用最小值和最大值:toLocaleString('en-US', { minimumFractionDigits: 4, maximumFractionDigits: 4 })

标签: javascript numbers format


【解决方案1】:

您可以使用second argument 提供一些选项。在您的情况下,使用默认语言环境:

number.toLocaleString(undefined, { minimumFractionDigits: 4 })

【讨论】:

  • 太棒了!我不知道那个方法有一个选项参数。
  • 谢谢。在分隔符后使用定义的数字数字在用户区域设置下格式化数字时,这似乎是唯一可能的解决方案。至于我自己,我使用了名为 maximumFractionDigits 的第二个参数。它强制以指定的小数位数输出数字。
  • 非常流畅且易于使用。
  • 如果您只使用 minimumFractionDigits,您可以获得超过 4 的位数。还有一个 maximumFractionDigits 字段 - 请参阅相关评论。
【解决方案2】:

我发现了

var number = 49.9712;
number.toLocaleString( { minimumFractionDigits: 4 })

给出“49.971”的结果

为了实际得到小数点后 4 位,我这样做了:

number.toLocaleString(undefined, { minimumFractionDigits: 4 })

还可以填写国家代码:

number.toLocaleString('en-US', { minimumFractionDigits: 4 })

在这两种情况下,我的答案都是 49.9712。

【讨论】:

  • 原生 JavaScript 的隐藏瑰宝。
【解决方案3】:

快速解决方案:

这样称呼它:

console.log(localeN(value, 4));
function localeN(v, n) {
    var i, f;
  
    i = Math.floor(v);
    f = v - i;
    return i.toLocaleString() + f.toFixed(n).substr(1);
}

【讨论】:

    【解决方案4】:

    您不能单独使用 toLocaleString() 来执行此操作。但您可以在显示前四舍五入到小数点后 4 位:

    var n = Math.round(number * 10000) / 10000;
    document.getElementById('id').innerText = n.toLocaleString();
    

    【讨论】:

    • 感谢您的快速回复。但我需要 4 位数字才能准确。
    • 编辑了 4 位小数。
    • 这是因为根据您的语言环境,toLocaleString() 可能只能四舍五入到小数点后 3 位(对我来说也是如此),这意味着额外的精度将会丢失。
    • 这个答案是错误的。您可以只使用 toLocaleString() 来完成,如下面 Radagast 的回答所示。
    猜你喜欢
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    相关资源
    最近更新 更多