【发布时间】:2011-09-22 05:51:08
【问题描述】:
我提前道歉。我已经阅读了许多帖子,我确信答案在于实现toFixed() 方法,但无法弄清楚如何。
$('.addsurcharge').click(function() {
$('span.depositamount').text(function(i,v) {
return Math.round(parseInt(v * 100, 10) * 0.025) / 100 + (v * 1);
});
});
$('.nosurcharge').click(function() {
$('span.depositamount').text(function(i,v) {
return Math.round(parseInt(v * 100, 10) * -0.025) / 100 + (v * 1);
});
});
基本上,以上是对 AMEX 存款添加(或减去)2.5% 的附加费,我希望它四舍五入到最接近的小数点后两位。最好以 0.05 为增量。
帮助表示赞赏!
【问题讨论】:
-
不完全确定“以 0.5 为增量”是什么意思。你能详细说明一下吗?
-
我不明白您对“两位小数”和“0.5 增量”的要求。后者不会是 1、1.5、2、2.5 等吗?你能用一些四舍五入前后的例子更好地解释一下吗?另外,你为什么使用
parseInt(v * 100,10)?如果 v 是小数,它将乘以 100 并将 向下 舍入到最接近的整数(因为 parseInt 会丢弃第一个非数字之后的所有内容);如果 v 是一个整数,它是没有意义的;如果 v 不是数字,它根本不起作用。 -
感谢您的回复。我的错误,应该写 0.05 inrements。这是针对澳大利亚网站的,这里的所有货币都以 0.05 为增量(5c 是最小的硬币)。不确定第二个问题,我基本上是按原样继承了上面的代码,我只是想解决小数问题。如果有更实用的解决方案,很乐意改变 - 你可能已经猜到了,这不是我的专业领域。
-
作为一个澳大利亚人,我不得不反驳你关于这里所有货币都是 0.05 增量的说法。所有 现金 付款都以 0.05 为增量,因为我们最小面额的硬币是 5c,但任何电子交易,或老式纸质信用卡或支票交易(显然包括美国运通交易)都是到最近的一分钱。除非您的客户支付现金,否则不要考虑四舍五入到最接近的 5 美分。
-
我理解你的观点,并不反对。在这个特定的实施方式中,金额是小额存款,通常是整美元。为了简化会计和用户体验,我只是想避免使用小数。感谢您的反馈。
标签: javascript jquery math decimal rounding