【发布时间】:2021-10-13 13:45:26
【问题描述】:
我正在做一个项目,我有一个输入字段,用户可以在其中输入美元金额,并根据他们愿意支付的频率将该金额除以所述值(2、4 或 12)。因此,例如,如果我输入 5 美元并将频率设置为 2,我会让它显示 2.50 美元的收费金额。我遇到的问题是,如果用户输入 20.27 美元,频率设置为 2,我希望看到 10.14 美元作为显示,但由于某种原因,即使在使用 Math.round 和 toFixed(2) 之后,我也会得到 10.13 美元。如果我输入 2.27 美元或 0.27 美元,我确实会分别得到预期的 1.14 美元和 0.14 美元,但一旦超过 10 美元,它就不再正确舍入。我无法弄清楚我做错了什么。这是我的代码:
const setAmount = (num) => {
scope.selectAmount(selectedAmount / num);
finalAmount = ((Math.round(selectedAmount * 100) / 100) / num).toFixed(2);
selectedAmountText = '$' + finalAmount;
$('#pay-schedule span').text(selectedAmountText);
}
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
它坏了 - 以什么方式?
-
它在某种意义上中断了,它开始向下舍入到 $x.13 而不是 $x.27 示例中的 $x.14。
-
如果您输入 4.27 美元,则四舍五入为 2.14 美元。如果您输入 10.27 美元,则四舍五入为 5.13 美元。
-
你总是希望它四舍五入吗?
-
我只是希望它四舍五入到以美分为单位的适当整数。因此,当原始金额为 2.135 美元(来自上面的示例)时,我希望它适当地四舍五入到 2.14 美元。如果输入数字的除法结果是 2.132 美元,我希望它会四舍五入到 2.13 美元。
标签: javascript math rounding number-formatting