簡體   English   中英

在javascript中計算減號操作會返回不正確的值

[英]Calculate a minus operation in javascript returns a incorrect value

這是我的javascript代碼:

var dsum = 0.0;
$.each($("#Report tbody tr"), function () {
    var x = 0.0;

    if ($(this).find("td:eq(3) div").html() != " ")
        x = parseFloat($(this).find("td:eq(3) div").html().replace(/,/g, ""));

    dsum += x;

});

var csum = 0.0;

$.each($("#Report tbody tr"), function () {
     var x = 0.0;
     if ($(this).find("td:eq(4) div").html() != " ")
         x = parseFloat($(this).find("td:eq(4) div").html().replace(/,/g, ""));
         csum += x;

});


var  lastEvenRow=$("#Report").find("tr:last").hasClass('erow');
$("<tr id='LastRow'><td colspan='3' style='border-top: 1px solid #DDDDDD;'><div style='padding:5px;text-align:right;'>Total :</div></td><td style='text-align:center;height:22px;border-top: 1px solid #DDDDDD;'><div style='padding:5px;'>" + dsum.toString(10).replace( /(\d)(?=(\d\d\d)+(?!\d))/g , "$1,") + "</div></td><td style='text-align:center;border-top: 1px solid #DDDDDD;'><div style='padding:5px;'>" + csum.toString(10).replace( /(\d)(?=(\d\d\d)+(?!\d))/g , "$1,") + "</div></td><td style='text-align:center;border-top: 0px solid #DDDDDD;'><div style='padding:5px;border-top: 1px solid #DDDDDD;'>" + (dsum > csum ? (dsum - csum).toString(10).replace( /(\d)(?=(\d\d\d)+(?!\d))/g , "$1,") : "&nbsp;") + "</div></td><td style='text-align:center;'><div style='padding:5px;'>" + (csum >= dsum ? (csum - dsum).toString(10).replace( /(\d)(?=(\d\d\d)+(?!\d))/g , "$1,") : "&nbsp;") + "</div></td></tr>").appendTo("#Report tbody");
if(lastEvenRow==false)
    $("#LastRow").addClass("erow");

在此輸入圖像描述

正如我在圖片中提到的,我認為結果必須像104,889.01,但正如你所看到的,它是不正確的值

有沒有什么機構可以幫助我? 抱歉我的英語語法不好(我是英文新手)

更新1

1318114.01 - 1213225必須是104889.01,為什么javascript返回104889.01000000001?!!

這是因為它適用於從二進制到十進制的轉換,然后我們有aproximations,其結果是大浮點數。 看到:

var i = 1;//1
i += .1;//1.1
i += .1;//1.2000000000000002

你可以嘗試自己的aproximation:

var result = Math.round((1318114.01-1213225)*1000)/1000;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM