来自
Intl.NumberFormat parameter descriptions
(增加了重点):
以下属性分为两组:
minimumIntegerDigits
,
minimumFractionDigits
和
maximumFractionDigits
在一组中,
minimumSignificantDigits
和
maximumSignificantDigits
另一个。
如果
定义第二个组中的至少一个属性,然后定义第一个
组被忽略。
必须有一些重写行为来处理属性设置冲突,但是在您的示例中,您可能会合理地希望重写行为不是全部或全部都是空的(因为对小数位数限制的调整在有效位数的指定范围内s)。不幸的是,如果设置了有效数字属性,那么规范只是忽略小数或整数的任何限制。
如果有人来找一种方法,利用这两种类型的属性来格式化一个数字,下面是一个非常基本的例子,连续使用这两个构造函数(注意,这会很快变得混乱,格式要求更复杂)。
const sigDigits = (n, min, max, minf, maxf) => {
let x = new Intl.NumberFormat('en-US', {
minimumSignificantDigits: min,
maximumSignificantDigits: max
}).format(n);
return new Intl.NumberFormat('en-US', {
minimumFractionDigits: minf,
maximumFractionDigits: maxf
}).format(x);
}
let result = sigDigits(10.123456789, 1, 3, 0, 0);
console.log(result);