2012-02-17 82 views
1

我在javascript中對一些數學計算有點麻煩。 此計算的目標是在用戶單擊文本字段時生成一個值。使用Javascript進行數學計算問題

例如: 1千克運送到美國的費用爲32美分,用戶想要知道10KG將花費他3.20美元。爲此,我有以下的一段JavaScript代碼:

function calculate(num) { 
     var weight = document.getElementById('weight'+num); 
     var price = document.getElementById('price'+num); 
     if(num == undefined || num == '' || num.length <= 0 || isNaN(weight.value) || isNaN(price.value)) return false; 

     if(num == 1) multiplyBy = 0.32; 
     if(num == 2) multiplyBy = 0.14; 
     if(num == 3) multiplyBy = 0.24; 
     if(num == 4) multiplyBy = 0.53; 

     var sum = parseInt(document.getElementById('weight'+num).value) * multiplyBy; 
     if(isNaN(sum)) return false; 
     price.value = sum; 
    } 

上面的代碼工作完全正常,但是當我相反的過程(有人有$ 3.20想要找出多少KG,他/她可以與出貨(這是10KG)的腳本返回:9.375KG

下面的代碼被用於該計算:

function reverse(num) { 
     var weight = document.getElementById('weight'+num); 
     var price = document.getElementById('price'+num); 
     if(num == undefined || num == '' || num.length <= 0 || isNaN(weight.value) || isNaN(price.value)) return false; 

     if(num == 1) divideBy = 0.32; 
     if(num == 2) divideBy = 0.14; 
     if(num == 3) divideBy = 0.24; 
     if(num == 4) divideBy = 0.53; 

     var sum = parseInt(document.getElementById('price'+num).value)/divideBy; 
     if(isNaN(sum)) return false; 
     weight.value = sum; 
    } 

老實說,我不掌握它爲什麼失敗,那將是多大,如果有人能夠理解幫我解決這個問題

+1

這與浮點錯誤沒有關係,因爲它將float解析爲int – 2012-02-17 10:41:11

+2

也許一個關於爲什麼使用整數(因此1c == 1,而不是1c == 0.01)進行貨幣計算的經驗往往是要走的路。 – 2012-02-17 10:42:25

+0

閱讀速度太快。我會刪除它。 – duffymo 2012-02-17 10:42:31

回答

4
var sum = parseInt(document.getElementById('price'+num).value)/divideBy; 

您正在迫使price成整數分割前。因此,如果price3.20,則實際上是3/0.32,即9.375

不要強制爲一個整數。