2015-10-23 45 views
0

所以我試圖採取一個可以以任何正面形式的數字並將其切成小數點後兩位。例如,我有一個145.26的輸入。然而在我的代碼中,這個數字正在下降到145.19。這裏是我使用的代碼:如何避免或解決地板功能和不正確的整數表示?

 var multiplier = 100; 
     var adjustedNum = input * multiplier; 
     var truncatedNum = Math[adjustedNum < 0 ? 'ceil' : 'floor'](adjustedNum); 
     var fixedResult = truncatedNum/multiplier; 

所以基本上我的「輸入」應該成爲145200.但是它實際上是變得145199.9999995或諸如此類的話。這會導致Math.floor方法將其舍入。有什麼方法可以解決或避免這種情況?

+1

使用'Math.round()'將'145199.9999'更改爲'145200'。 – Barmar

+0

我不想這樣做,因爲我需要保持2位小數的位置。所以132.267會變成132.27,但我希望它保持爲132.26 – Locke

+1

將乘數變爲1000. – Barmar

回答

1

將該數字再乘以10來舍入。然後除以10以應用floorceil

var multiplier = 100; 
var adjustedNum = Math.round(input * multiplier * 10); 
var truncatedNum = Math[adjustedNum < 0 ? 'ceil' : 'floor'](adjustedNum/10); 
var fixedResult = truncatedNum/multiplier;