2017-10-09 60 views
0

我试图将一个数字舍入到下一个最高点0.1小数点。例如,如果我有2.51我希望它被调高至2.63.9144.124.2JavaScript循环到下一个0.1

我试过不过以下这只是四舍五入到最接近最近0.1小数,而不是下一个0.1

4.41.toFixed(1); 

这四舍五入到4.44.5如预期

+0

您需要使用'Math.round' –

+0

可能的复制[你怎么四舍五入到1位小数在Javascript?](https://stackoverflow.com/questions/7342957 /你怎么做到小数点后一位在JavaScript中) – Liam

+1

乘以数字,然后使用.ceil(),然后除以10. – Dellirium

回答

4

鸿沟,小区,然后乘以和格式。

(Math.ceil(num * 10)/10).toFixed(1); 
0

只需将该数字乘以10,使用Math.ceil()然后通过10

Math.ceil(num * 10)/10 
1
(Math.ceil(num * 10)/10).toFixed(1); 

划分它会做到这一点。

请注意,这仍然会在第16位有效数字中留下尾数,尽管由于浮点数一般不能精确地截断为小数点后1位。 4.5因为它是一个二元的理性。例如,最接近的double2.62.600000000000000088817841970012523233890533447265625

0
Math.ceil(4.41*10)/10 // 4.5 

更一般地,

Math.ceil(x*10)/10 
0

您可以添加的0.049999999偏移,并采取固定值。

function round(v) { 
 
    return (v + 0.049999999).toFixed(1); 
 
} 
 

 
console.log(round(2.51)); // 2.6 
 
console.log(round(3.91)); // 4.0 
 
console.log(round(4.12)); // 4.2 
 
console.log(round(1)); // 4.2

相关问题