0

我的代码又快又安静,但是在一些计算中的结果是格式化的非常大,包括,得到的值没有进入计算。如何做到这一点看到正确的结果?

我希望计算的结果 (3 * 2215.40) 是 3 646.20 而不是 3.6450000000000005。

如何?

代码 - http://jsfiddle.net/bruno_aw/M7JZu/

$(".calc_cub").on("keyup", ".qtd", function(){
    var valorCub = $("#CUB").text();        
    var number = parseFloat(valorCub);  
    var qtd = +$(this).val();
    $(".total").text(number * qtd).val().toFixed(2);
});
4

3 回答 3

1

您需要首先从文本中获取数字。在将文本设置为 .total 之后,您还调用了 .val() - 您真正需要做的就是$(".total").text((number * qtd).toFixed(2))

$(".calc_cub").on("keyup", ".qtd", function () {
    var valorCub = $("#CUB").text().split(' '); // returns ["Valor", "CUB", "R$", "1,215.40"]
    var number = parseFloat(valorCub[valorCub.length - 1].replace(',','')); // get last one in array and remove comma
    var qtd = +$(this).val();
    $(".total").text((number * qtd).toFixed(2));
});

http://jsfiddle.net/GMjjc/

于 2013-04-17T18:30:50.067 回答
0

您混淆了文本块的字符串和浮动的分隔符。尝试这个;

http://jsfiddle.net/M7JZu/8/

JavaScript

$(".calc_cub").on("keyup", ".qtd", function () {
    var valorCub = $("#CUB").text();
    valorCub = parseFloat(valorCub.split('$ ')[1].replace('.', '').replace(',', '.'));
    var qtd = $(this).val();
    $(".total").text(valorCub * qtd);
});

为了输出,您可以在输出时再次将.后面转换为,(逗号)。

于 2013-04-17T18:30:48.127 回答
0

试试这个改变:

$(".total").text((number * qtd).toFixed(2));

请注意,在您的小提琴中,CUBdiv 包含文本和数字。parseFloat()当数字在字符串的前面时有效。因此,您需要安排一些事情,以便隔离号码。你可以这样做:

<div>Some text is here <span id="CUB">1234.50</span></div>
于 2013-04-17T18:27:39.287 回答