更好的JavaScript舍入(非“银行家”舍入)

更好的JavaScript舍入(非“银行家”舍入),javascript,Javascript,在JavaScript中,我希望将其减少到小数点后5位。除此之外,我不能简单地四舍五入得到.03085,我需要进一步向下看数字,并将所有数字四舍五入,这样我将得到.03086 输入:0.030854494999999 非期望值:0.0308544949999999。toFixed(5)=0.03085 所需输出:.03086请尝试以下操作 function myRounding(num, decimals) { var power10 = Math.pow(10, decimals);

在JavaScript中,我希望将其减少到小数点后5位。除此之外,我不能简单地四舍五入得到.03085,我需要进一步向下看数字,并将所有数字四舍五入,这样我将得到.03086

输入:0.030854494999999

非期望值:0.0308544949999999。toFixed(5)=0.03085

所需输出:.03086

请尝试以下操作

function myRounding(num, decimals) {
    var power10 = Math.pow(10, decimals);
    return Math.ceil(num*power10) / power10;
}
myRounding(0.030854494999999999, 5); // 0.03086

我想你指的是
.toFixed(5)
由于方法的原因,没有绝对的方法可以做到这一点。总有一定百分比的误差,因为这给了我一个想法。可以使用pow和Math.round(而不是ceil)将数字四舍五入到所需的精度。然而,您的解决方案实际上更符合我们的需要。