1

このスクリプトにエラーがあります。計算システムは機能しますが、エラーがあります。

$(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 になります。私を助けてください

4

3 に答える 3

2

通貨データに浮動小数点値を使用しないでください。価格はセント単位で表示し、プレゼンテーションに合わせて数値をフォーマットします。浮動小数点数には常に丸め誤差があります

セントを扱う場合100、値をドル (または他の通貨) で表示したい場合は、次のように割るだけです。

var total = 4495 + 14995;
var display = total / 100;
$("#total").val(display);
于 2013-03-21T10:02:00.307 に答える
0

フォーマットされた通貨を返す関数は、2.dp に丸める必要があります。

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
于 2013-03-21T09:59:05.367 に答える
0

あなたが欲しいと仮定199.89999995して199.9、試してください:

var x = 49.95 + 149.95;    

Math.ceil(x *10) / 10;   // 199.9

それが丸め誤差である場合は、Felix King が提案した以外に何もできません。

于 2013-03-21T09:59:15.617 に答える