javascript - Math.floor 不一致地截断到小数点后 2 位 - Javascript/Acrobat
问题描述
我知道在这里经常会问到类似的问题,但是在搜索了几个小时后,我无法找到我能够工作的答案;真的可以使用你的帮助。
在 Adobe 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 位而不进行四舍五入?
对于可能过度解释的事情,我们深表歉意!
解决方案
推荐阅读
- python - 仅截距的逻辑回归
- swift - SwiftUI Button 与 Map 交互
- python - 如何使 Kivy 中的水平滚动视图以屏幕为中心?
- swift - 如何在 Swift 的泛型函数中制作 let 参数的可变副本
- python - 如何使用 sympy 找到生成函数的第 n 项?
- tensorflow - 是否可以将多个图像输入馈送到卷积神经网络
- kdb - 如何在 kdb 中的分区表上应用 asof 连接
- python - 从字典列表中获取特定值
- java - “mvn 依赖:树”和 http://repo.maven.org 依赖细节之间的区别
- r - 在 R 中使用大型哈希表