问题描述
var num = 20.3698 //20.37
var num = 0.36587 //0.37
var num = 0.000014247 //0.000014
var num = 0.0000000000099879 //0.000000000001
我在 JavaScript 代码中遇到了一个问题:我有一些随机的大小不一的十进制数字,这些数字在打印时在视图窗格中占用了太多空间。
示例:
var num = 0.023810002044
没问题,因为在这里我可以使用 toFixed(2)
但像这样的数字 0.00000000008824721 占用很多空间,如果我使用 toFixed(2)
那么它会给我 0.00 但我想要 0.00000000009 并且如果给定一个数字0.03248 那么输出应该是 0.03。
解决方法
您可以取 10 的对数并调整较小的数字。
const
fix = v => v > 0.01
? v.toFixed(2)
: v.toFixed(1 - Math.floor(Math.log10(Math.abs(v))));
console.log([20.3698,0.36587,0.000014247,0.00000000008824721,0.0000000000099879].map(fix));