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



我想用指数表示法格式化大数字(>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/,'.$1e')

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

最新更新