2017-10-09 24 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

相關問題