【问题标题】:JavaScript: toLocaleString()JavaScript: toLocaleString()
【发布时间】:2017-02-14 05:16:51
【问题描述】:

我的 JavaScript toLocaleString() 在这里做了一些奇怪的事情。如果我有一个小于 1000 的数字,它将给我点作为十进制分隔符,但如果我有一个大于 1000 的数字,它将给我逗号作为十进制分隔符。

我的语言环境设置使用点作为千位分隔符,逗号作为十进制分隔符。

这是我使用代码的方式:

sellingPrice.toLocaleString(undefined, { minimumFractionDigits: 2 }

如果 sellPrice 是700,它会给我700.00 如果 sellPrice 是7000,它会给我7.000,00

但结果是一样的

为什么会这样?

【问题讨论】:

  • Looks good to me. 检查您的 Chrome 的语言环境。 window.navigator.language
  • 对于7000 和700,这将分别返回7.000,00 和700,00 ~ number.toLocaleString('de', {minimumFractionDigits: 2})
  • 如何准确设置格式? javascript 将遵循什么设置?
  • @Phil 提到,这是因为您的语言环境设置不正确。使用number.toLocaleString('en', {minimumFractionDigits: 2}),它应该可以正常工作。
  • 如果您希望locale 是动态的,请使用@malllendeo 提到的内容...类似于number.toLocaleString(window.navigator.language, {minimumFractionDigits: 2})

标签: javascript internationalization number-formatting


【解决方案1】:

我刚刚发现 javascript 遵循浏览器区域设置。

就我而言,我使用 chrome。我必须将语言更改为我的语言(印度尼西亚)才能实现我的目标,这有点令人失望。我希望我的浏览器语言是英语。

我不能使用“en”或“de”,因为我希望代码是动态的并遵循用户区域设置。

【讨论】:

    【解决方案2】:
    var sellingPrice=700;sellingPrice.toLocaleString('en-us', { minimumFractionDigits: 2 });
    

    会给你结果700.00

    和

    var sellingPrice=7000;sellingPrice.toLocaleString('en-us', { minimumFractionDigits: 2 });
    

    会给你结果7,000.00

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2022-01-07
      • 2014-02-27
      • 1970-01-01
      • 2015-10-13
      • 2021-04-20
      • 1970-01-01
      相关资源
      最近更新 更多