Javascript:为什么会产生丑陋的字符串??? 我想要货币

发布于 2024-07-29 13:21:10 字数 387 浏览 6 评论 0原文

var total = 0;
$(".amount").each(function () {
    var value = $(this).val();
    value = (value.length < 1) ? 0 : value;
    var tmp = parseFloat(value).toFixed(2);
    total += tmp;
});
$(".total").text(total);

我正在尝试遍历一些文本框并总结它们的值。 这会产生一个令人讨厌的字符串。 我缺少什么? 如果我在第一个文本框中输入 8,则总文本最终为“08.000.000.000.00”。 我究竟做错了什么? 我想格式化为货币,但如果不是,至少只是一个两位小数。 有什么指点吗?

var total = 0;
$(".amount").each(function () {
    var value = $(this).val();
    value = (value.length < 1) ? 0 : value;
    var tmp = parseFloat(value).toFixed(2);
    total += tmp;
});
$(".total").text(total);

I am trying to loop through some text boxes and sum up their values. This produces a nasty string. What am I missing?? if I put 8 in the first textbox total text ends up as " 08.000.000.000.00". What am I doing wrong? I would like to format as currency but if not, at least just a two decimal number. Any pointers?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千秋岁 2024-08-05 13:21:10

.toFixed 将对象从数字转换为字符串。

保留完整值,仅在最后使用 .toFixed 进行转换。

$(".total").text(total.toFixed(2));

或者,将字符串转换回数字。

total = total + + tmp;

.toFixed converts the object from a Number to a String.

Leave the full values in place and only convert using .toFixed at the very end

$(".total").text(total.toFixed(2));

Alternatively, convert the string back to a number.

total = total + + tmp;
丘比特射中我 2024-08-05 13:21:10

仅供参考,有一个优秀的 jQuery 数学聚合插件: jQuery Calculation< /a>

使用该插件也可以间接解决您的问题。

它的使用会将您的脚本减少为:

$('.total').text($('.amount').sum());

Just FYI, there is an excellent mathematical aggregation plugin for jQuery: jQuery Calculation

Using that plugin may also indirectly solve your issue.

It's usage would reduce your script to:

$('.total').text($('.amount').sum());
挥剑断情 2024-08-05 13:21:10

您正在将 parseFloat 转换为字符串,然后将其添加到总计中。 添加内容后,仅将 .toFixed(2) 添加到最后一行。

var total = 0;
$(".amount").each(function() {
    var value = $(this).val();
    value = (value.length < 1) ? 0 : value;
    var tmp = parseFloat(value);
    total += tmp;
});
$(".total").text(total).toFixed(2);

You are converting the parseFloat into a string, then adding it to total. Only add .toFixed(2) to the final line, once things have been added.

var total = 0;
$(".amount").each(function() {
    var value = $(this).val();
    value = (value.length < 1) ? 0 : value;
    var tmp = parseFloat(value);
    total += tmp;
});
$(".total").text(total).toFixed(2);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文