首页 > 解决方案 > Math.floor 不一致地截断到小数点后 2 位 - Javascript/Acrobat

问题描述

我知道在这里经常会问到类似的问题,但是在搜索了几个小时后,我无法找到我能够工作的答案;真的可以使用你的帮助。

在 Adob​​e Acrobat 中使用 Javascript 处理定价计算器,我需要将一个数字限制为精确的 2 位小数,不进行任何四舍五入。

我需要限制小数位,因为计算器的下一步是根据小数点在一个范围内的位置调整该数字以适应我们的定价结构。这是我在某些情况下的调整代码。

if (decimals < 0.20)event.value = -1.01;
else if ((decimals > 0.19) && (decimals < 0.30))event.value = 0.29;
else if ((decimals > 0.29) && (decimals < 0.40))event.value = 0.39;
else if ((decimals > 0.39) && (decimals < 0.50))event.value = 0.49;
else if ((decimals > 0.49) && (decimals < 0.60))event.value = 0.59;
else if ((decimals > 0.59) && (decimals < 0.70))event.value = 0.69;
else event.value = 0.99;

例如,当我的值为 15.390001 时,就会出现问题。 我需要那个调整代码来返回 15.39,但现在它被推到 15.49,因为 x.390001 大于 x.39。

目前使用下面的代码将数字截断到小数点后 2 位而不四舍五入。

var flcost = this.getField("fl_cost"); // Front Line Cost
var multi = this.getField("multiplier_calc"); // Subcat Multiplier
var dep = this.getField("deposit"); //Deposit total

var nAdj = Math.pow(10, 2); // decimal adjustment

var rough = Math.floor(flcost.value * multi.value * nAdj) / nAdj;
event.value = rough+deposit;

我收到不一致的返回值。例如,它将正确地将 11.376 截断为 11.37,并将 9.432 截断为 9.43。

但是,当我输入 23.832 之类的内容时,它返回 23.830000000000002,而在另一种情况下,当输入 143.832 时,它返回 143.82999999999998。在其他情况下,我看到它实际上是四舍五入,所以我非常困惑。

那么,我需要做什么才能正确地将数字减少到小数点后 2 位而不进行四舍五入?

对于可能过度解释的事情,我们深表歉意!

标签: javascriptroundingacrobattruncate

解决方案


推荐阅读