toExponential() 仅适用于具有有效 fractionDigits 的大数

toExponential() for large numbers with significant fractionDigits only

我想用有限位数的指数表示法格式化大数 (>1e5),但跳过不必要的零数字。

expect(print(100000)).toBe('1e5');
expect(print(123456)).toBe('1,234e5');
expect(print(101000)).toBe('1,01e5');

value.toExponential(3) 给我 1.000e+51,234e+51,010+5

value.toExponential() 给我 1e+51,23456e+51,01+5

我可以想象出类似 123456 -> 1.23456 -> "1.234" -> 1.234 -> 123400 -> "1.234e+5" 的东西,但我希望有更好的方法来做到这一点。如果不是,那么这种转换的好的实现是什么。

如果在 e 之前不需要任何额外的 0,可以这样做:

value.toExponential(3).replace(/0+e/,'e').replace('.e','e')

或者您可以这样做:

value.toExponential().replace(/[,.](\d{3})\d*e/,'.e')

3替换为所需的小数位数。