我是Javascript的新手所以请耐心等待。
我有这个功能,累计总计。如何使它显示最接近的两位小数而不是小数位呢?
function calcProdSubTotal() {
var prodSubTotal = 0;
$(".row-total-input").each(function() {
var valString = $(this).val() || 0;
prodSubTotal += parseInt(valString);
});
$("#product-subtotal").val(CommaFormatted(prodSubTotal));
}
谢谢!
编辑:根据要求:逗号形式:
function CommaFormatted(amount) {
var delimiter = ",";
var i = parseInt(amount);
if(isNaN(i)) { return ''; }
i = Math.abs(i);
var minus = '';
if (i < 0) { minus = '-'; }
var n = new String(i);
var a = [];
while(n.length > 3)
{
var nn = n.substr(n.length-3);
a.unshift(nn);
n = n.substr(0,n.length-3);
}
if (n.length > 0) { a.unshift(n); }
n = a.join(delimiter);
amount = "$" + minus + n;
return amount;
}
答案 0 :(得分:1)
好parseInt
解析整数,所以你在那里摆脱任何小数。使用parseFloat
。
E.g。
parseFloat('10.599').toFixed(2); //10.60
您可能还想将commaFormatted
功能更改为:
function commaFormatted(amount) {
if (!isFinite(amount) || typeof amount !== 'number') return '';
return '$' + amount.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
}
commaFormatted(0); //$0.00
commaFormatted(1.59); //$1.59
commaFormatted(999999999.99); //$999,999,999.99
答案 1 :(得分:0)
您正在寻找toFixed()。它需要一个参数digits
。该参数记录如下:
小数点后出现的位数;这可以是0到20之间的值,包括0和20,并且实现可以可选地支持更大范围的值。如果省略此参数,则将其视为0。
还要注意parseInt()解析整数,截断您可能拥有的任何小数。 parseFloat()将按预期保留小数。
答案 2 :(得分:0)
用于运作toFixed(2)
2是一个整数参数,表示使用2个小数点,假设您的逗号格式化代码不会将其转换为字符串。 (如果是,请在运行格式之前修复小数)
$("#product-subtotal").val(CommaFormatted(parseFloat(prodSubTotal).toFixed(2)));
请记住parseFloat
,因为val()
可能是一个字符串!“
答案 3 :(得分:0)
我解决了我的问题。我只是改变了:
$("#product-subtotal").val(CommaFormatted(prodSubTotal));
到
$("#product-subtotal").val(prodSubTotal);
正如我在评论中所说,这不是我写的剧本。这是Chris Coyier写的一个剧本,我只是想修改它。我想我不需要为我的目的使用CommaFormatted?
谢谢大家的帮助!