我有十进制数字,我需要将它舍入到尽可能少的小数位数。
例如:
0.0812321321 - > 0.1
0.001232123 - > 0.001
0.00001535865586 - > 0.00002
我正在考虑找到最近的10的更高倍数,所以这些例子会得到以下结果:0.1; 0.01; 0.0001。对于我的项目,它足够接近,但我无法创建一个能够做到这一点的功能。
答案 0 :(得分:1)
function nearestDecimal(number) {
if (!number) {
return "0";
}
const decimals = -Math.log10(number);
const integerPart = Math.floor(decimals);
const fractionalPart = decimals - integerPart;
return number.toFixed(Math.max(0,
fractionalPart >= -Math.log10(.5) ? Math.ceil(decimals) : integerPart
));
}