使用少量小数位舍入到最接近的十进制数

时间:2017-10-22 23:00:53

标签: javascript decimal rounding

我有十进制数字,我需要将它舍入到尽可能少的小数位数。

例如:

0.0812321321 - > 0.1

0.001232123 - > 0.001

0.00001535865586 - > 0.00002

我正在考虑找到最近的10的更高倍数,所以这些例子会得到以下结果:0.1; 0.01; 0.0001。对于我的项目,它足够接近,但我无法创建一个能够做到这一点的功能。

1 个答案:

答案 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
    ));
}