使用toLocaleString格式化百分比会导致值乘以100

时间:2017-09-06 13:56:59

标签: javascript

我一直在努力理解为什么在使用Number.prototype.toLocaleString时,它会将我的数字乘以100.

var num = 5;
alert(num + ' vs ' + num.toLocaleString('en-GB', { style: 'percent' }));

阅读所有参考指南,我没有看到任何暗示它应该是的东西。

我完全错过了这一点吗?

3 个答案:

答案 0 :(得分:1)

来自spec

  

如果numberFormat。[[style]]的值为“percent”,则x为100×x。

它期望[0,1]范围内的数字然后形成0%到100%之间的数字

答案 1 :(得分:0)

造成这种情况的percent而不是toLocaleString,原因是百分比是从01的数字0%来衡量的100%,如果您需要5%,请使用:

var num = .05;
alert(num + ' vs ' + num.toLocaleString('en-GB', { style: 'percent' }));

更多@ Number.prototype.toLocaleString()

答案 2 :(得分:0)

正如许多其他系统所做的那样,toLocaleString的百分比样式将1解释为100%

这是表达百分比的常用方法(例如in probability theory,其中100%概率为1)。