在JavaScript中,我有一个任意数字作为输入。
例如:
var number = parseFloat(12345678901234.1234567);
现在我想将其显示为:
12'345'678'901'234.12
应该是
xxx'xxx'xxx.00
如果是整数,则
xxx'xxx'xxx.y0
如果小数点后只有一位数
我会假设这样做可以解决问题:
var number = parseFloat(12345678901234.1234567);
console.log(number.toLocaleString('de-CH', { minimumFractionDigits:2, maximumFractionDigits: 2
}));
但实际上它显示的是12'345'678'901'234.10
,而不是12'345'678'901'234.12
所以我想也许我需要将minimumSignificantDigits设置为2。
但运气不好,我发现minimumSignificantDigits显然考虑了字符串中的所有数字,无论是什么愚蠢的原因,所以我需要将整数部分的位数加到2.喜欢:
var number = parseFloat(12345678901234.1234567);
console.log(number.toLocaleString('de-CH', { minimumFractionDigits:2, maximumFractionDigits: 2
,minimumSignificantDigits: parseInt(number).toString().length + 2
}));
但这仍然显示
12'345'678'901'234.10
将float转换为Number类型也没有帮助,输出仍然相同。
var number = Number(parseFloat(12345678901234.1234567));
console.log(number.toLocaleString('de-CH', { minimumFractionDigits:2, maximumFractionDigits: 2
,minimumSignificantDigits: parseInt(number).toString().length + 2
}));
我也试过这个
var number = parseFloat(12345678901234.1234567);
number.toLocaleString('de-CH', {style: 'currency', currency: 'CHF', currencyDisplay: 'code'}).replace('CHF', '')
但它似乎也没有用。
添加样式:"十进制"没有帮助,要么......
此外,我不想知道每个区域设置的货币名称。
我做错了什么?
除了编写我自己的格式化代码之外别无其他方法(我遇到的问题是我不知道每个语言环境的千位分隔符char)吗?
或者这是一个JavaScript错误?