我想用指数表示法格式化大数字(>1e5),小数位数有限,但跳过不必要的零位数。
expect(print(100000)).toBe('1e5');
expect(print(123456)).toBe('1,234e5');
expect(print(101000)).toBe('1,01e5');
value.toExponential(3)
给我1.000e+5
、1,234e+5
、1,010+5
value.toExponential()
给了我1e+5
、1,23456e+5
、1,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
替换为所需的小数位数。