【问题标题】:The total shows the price with .999995 at end总计显示以 .999995 结尾的价格
【发布时间】:2013-03-21 09:48:41
【问题描述】:

我在这个脚本上有一个错误。计算系统工作,但有错误:

$(document).ready( function() {
    $("#total").val("55.95");
    $("#amount").val("512MB");
    $("#amount1").val("512MB");
    $("#amountb").val("10GB");
    $("#amount2").val("10GB");

    $( function() {
        var ram = {

            0: "512MB",
            1: "1GB",
            2: "2GB",
            3: "4GB",
            4: "8GB",
            5: "16GB",
            6: "32GB",

        };
        var pram = {

            0: "49.95",
            1: "89.95",
            2: "149.95",
            3: "32",
            4: "64",
            5: "128",
            6: "256",

        }
        var hdd = {

            0: "10GB",
            1: "15GB",
            2: "20GB",
            3: "25GB",
            4: "30GB",
            5: "35GB",

        };
        var phdd = {

            0: "49.95",
            1: "99.95",
            2: "100.95",
            3: "49.14",
            4: "28",
            5: "40",
        }
        $("#slider").slider({

            value: "0",
            min: 0,
            max: 6,
            step: 0,
            slide: function(event, ui) {

                $("#price").val(pram[ui.value]);
                $("#amount").val(ram[ui.value]);
                $("#amount1").val(ram[ui.value]);
                var aaa = $("#price").val();
                var bbb = $("#priceb").val();
                $("#total").val(+aaa + +bbb);
            }
        });

        $("#sliderb").slider({
            value: "0",
            min: 0,
            max: 5,
            step: 1,
            slide: function(event, ui) {
                $("#priceb").val(phdd[ui.value]);
                $("#amountb").val(hdd[ui.value]);
                $("#amount2").val(hdd[ui.value]);
                var aaa = $("#price").val();
                var bbb = $("#priceb").val();
                $("#total").val(+aaa + +bbb);
            }
        });

        $("#price").val('$' + $("#slider").slider("value"));
        $("#priceb").val('$' + $("#slider").slider("value"));


        $("#price").val("4");
        $("#priceb").val("3");


    }
    );
});

如果我计算 49.95 + 149.95,结果是 199.89999995,结果是 199.9 我不知道该怎么办。请帮帮我

【问题讨论】:

  • 如果您尝试四舍五入到小数点后两位怎么办?
  • 不要对货币数据使用浮点值。保持您的价格以美分为单位,并为演示文稿相应地格式化数字。浮点数总是有舍入错误:stackoverflow.com/questions/588004/….
  • 我该如何改变这个?
  • 49.95 变为 4995。 IE。将价格乘以 100。
  • 如果我把它改成 4995 它没有错误。但我需要点

标签: jquery calculator


【解决方案1】:

不要对货币数据使用浮点值。保持您的价格以美分为单位,并为演示文稿相应地格式化数字。 Floats always have a rounding error.

如果您使用美分,您只需除以100,如果您想以美元(或任何其他货币)显示值:

var total = 4495 + 14995;
var display = total / 100;
$("#total").val(display);

【讨论】:

  • 但总数不是一个值就像“$("#total").val("56.95");"
  • 我不明白你的评论。
  • 我没有 var 总数。总数看起来像这样 "$("#total").val("56.95");"
  • 这只是一个示例。您必须调整代码以使用美分,这就是重点。我提供了一个通用的解决方案,现在你必须将它应用到你的代码中。
【解决方案2】:

返回格式化货币的函数应四舍五入为 2.d.p,例如

var symbol="$ ";
var p1 = 49.95;
var p2 = 149.95;
var sum = p1+p2;
return symbol+sum.toFixed(2); //just return the sum to 2 decimal places

【讨论】:

    【解决方案3】:

    假设您希望 199.89999995199.9,请尝试:

    var x = 49.95 + 149.95;    
    
    Math.ceil(x *10) / 10;   // 199.9
    

    如果是舍入误差,那么除了 Felix King 的建议之外,什么也做不了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多