2015-10-23 16 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;