如何避免或解决 floor 函数和错误表示的整数?
How do I avoid or work around the floor function and incorrectly represented integers?
所以我想取一个可以是任何正数形式的数字并将其保留到小数点后两位。例如,我的输入是 145.26。但是在我的代码中,这被四舍五入为 145.19。这是我使用的代码:
var multiplier = 100;
var adjustedNum = input * multiplier;
var truncatedNum = Math[adjustedNum < 0 ? 'ceil' : 'floor'](adjustedNum);
var fixedResult = truncatedNum / multiplier;
所以基本上我的 'input' 应该变成 145200。但是它实际上变成了 145199.9999995 或类似的东西。这导致 Math.floor 方法将其向下舍入。有什么办法可以解决或避免这种情况吗?
将数字再乘以 10 以进行四舍五入。然后将其除以 10 以应用 floor
或 ceil
.
var multiplier = 100;
var adjustedNum = Math.round(input * multiplier * 10);
var truncatedNum = Math[adjustedNum < 0 ? 'ceil' : 'floor'](adjustedNum/10);
var fixedResult = truncatedNum / multiplier;
所以我想取一个可以是任何正数形式的数字并将其保留到小数点后两位。例如,我的输入是 145.26。但是在我的代码中,这被四舍五入为 145.19。这是我使用的代码:
var multiplier = 100;
var adjustedNum = input * multiplier;
var truncatedNum = Math[adjustedNum < 0 ? 'ceil' : 'floor'](adjustedNum);
var fixedResult = truncatedNum / multiplier;
所以基本上我的 'input' 应该变成 145200。但是它实际上变成了 145199.9999995 或类似的东西。这导致 Math.floor 方法将其向下舍入。有什么办法可以解决或避免这种情况吗?
将数字再乘以 10 以进行四舍五入。然后将其除以 10 以应用 floor
或 ceil
.
var multiplier = 100;
var adjustedNum = Math.round(input * multiplier * 10);
var truncatedNum = Math[adjustedNum < 0 ? 'ceil' : 'floor'](adjustedNum/10);
var fixedResult = truncatedNum / multiplier;