javascript数学,以.05为增量四舍五入到小数点后两位
javascript math, rounding to two decimal places in .05 increments
我提前道歉。我已经阅读了很多文章,我相信答案在于实现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为增量。
感谢帮助!
货币最简单的方法是使用次要单位,然后四舍五入,最后才转换为主要单位。因此,对于一个有美元和美分的系统,以美分为单位工作到最后,然后转换为美元。如果要输入的文本的格式为"2.03",则可以使用以下方法将其四舍五入到最接近的0.05美元:
function roundToFiveCents(v) {
// Turn dollars into cents and convert to number
var len;
v = v * 100;
// Get residual cents
var r = v % 5;
// Round to 5c
if (r) {
v -= (r == 1 || r == 2)? r : r-5;
}
// Convert to string
v = v + '';
len = v.length - 2;
// Return formatted string
return v.substring(0, len) + '.' + v.substring(len);
}
这可以更简洁,但我看不出重点,它只会让服务器混淆。字符串操作非常快速,用简单的加法和减法代替了javascript乘法和小数除法的不确定性。
例如,借用rfausak的答案:
// Returns string, remove ' + ''' to return number
function roundToFiveCents(v) {
return (Math.round(v*20)/20).toFixed(2) + '';
}
如果你的问题是"我如何接受v
,一个包含美元和美分金额的变量,并应用2.5%的AMEX附加费,结果四舍五入到最接近的美分(即两位小数(?"那么你可以试试这个:
return (v * 1.025).toFixed(2);
如果你有可变附加费,试试这个:
var surcharge = 0.025; // or whatever percentage applies
return (v * (1 + surchage)).toFixed(2);
请注意,toFixed
返回一个字符串表示,但它会为您进行舍入。
(关于你的"nosurcharge"函数,你不能通过乘以-0.025来去除之前施加的0.025的附加费。你可以通过乘以1.025来应用加法,所以你可以通过除以1.025来去除它。(
尽管这篇文章有点旧,但问题不是。我想海报的意思是,有些货币是以美分计算的,但价格是以x.00或x.05美分计算的。例如瑞士货币。
该解决方案借鉴了RobG的答案,并进行了一些修复:
function roundToFiveCents(v) {
var len;
// Format to 2 numbers after decimal point an turn dollars into cents
v = v.toFixed(2) * 100;
// Get residual cents
var r = v % 5;
// Round to 5c
if (r) {
v -= (r === 1 || r === 2) ? r : r - 5;
}
// Convert to string
v = v + '';
len = v.length - 2;
// Return formatted string
return v.substring(0, len) + '.' + v.substring(len);
}
下面的javascript:怎么样
function my_round(x) {
x *= 20;
x = Math.ceil(x);
return x / 20;
}
var amount = 3.37;
alert(my_round(amount));
var n = 8.22354;
roundx(n, 3)
function roundx(num, decPlace) {
return Math.round(num * Math.pow(10, decPlace))/Math.pow(10, decPlace);
}
这个简单的函数适用于舍入到x个位数。
相关文章:
- 将数字四舍五入到小数点后两位
- 将数字四舍五入到小数点后两位,以设置货币格式
- 用Javascript显示价格,小数点后两位
- 小数点后两位四舍五入-找不到正确的公式
- 将 JavaScript 数字转换为小数点后两位
- 将数字舍入到小数点后两位,并删除任何其他小数点
- 在谷歌图表中以小数点后两位显示数字
- 在 Javascript 中难以将 json 对象值四舍五入到小数点后两位
- 在asp.net文本框中键入时自动添加一个点(.)(将文本框格式设置为小数点后两位)
- 如何将减去的值四舍五入到小数点后两位
- JavaScript数学,在Jquery模板中四舍五入到小数点后两位
- JS四舍五入到小数点后两位
- javascript数学,以.05为增量四舍五入到小数点后两位
- 仅当数字小于小数点后两位时添加.00 (toFixed)
- 如何在java脚本中进行小数点后两位的取整
- 四舍五入到小数点后两位,javascript
- 查找小于小数点后两位的数字的REGEXP
- 将计数 javascript 程序设置为小数点后两位
- 在文本框的按键中限制为小数点后两位
- 如何在Javascript中四舍五入小数点后两位