2013-03-21 92 views
1

我在此腳本中出現錯誤。計算系統的工作原理,但它有一個錯誤:如果我calcultate 49.95 + 149.95結果是199.89999995總計以.999995結尾顯示價格

$(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"); 


    } 
    ); 
}); 

,其結果是199.9 我不知道該怎麼辦。請幫助我

+0

? – 2013-03-21 09:50:18

+3

不要對貨幣數據使用浮點值。以美分爲單位保留價格並相應地爲演示文稿格式化數字。浮動總是有一個四捨五入錯誤:http://stackoverflow.com/questions/588004/is-javascripts-floating-point-math-broken。 – 2013-03-21 09:50:36

+0

,我該如何改變? – Schito9X 2013-03-21 09:56:55

回答

0

返回格式化貨幣的函數應循環爲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 
0

假設你想199.89999995199.9,嘗試:

var x = 49.95 + 149.95;  

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

如果是舍入誤差,再沒有什麼可以對此做其他比菲利克斯國王建議。

2

不要對貨幣數據使用浮點值。以美分爲單位保留價格並相應地爲演示文稿格式化數字。 Floats always have a rounding error

如果您有美分工作,所有你需要做的就是通過100鴻溝,如果你想顯示在美元價值(或任何其他貨幣):如果您嘗試四捨五入至小數點後2位什麼

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

但總計不是像「$(」#total「)。val(」56.95「);」 – Schito9X 2013-03-21 10:03:31

+0

我不明白你的意見。 – 2013-03-21 10:04:09

+0

我沒有var總數。總的看起來像這樣「$(」#total「)。val(」56.95「);」 – Schito9X 2013-03-21 10:22:34