2017-09-06 67 views
-3

我在我的代碼使用這些:JavaScript是串聯的,而不是添加

alert(mult); //1.114 
alert(profit); //10 
price = (mult * profit) + profit; 
alert(price); //11.14 should be 21.14 

我也試過price = ((mult*profit) + profit);但得到了同樣的結果。而不是做(1.114*10) + 10;這是做1.114*10=11.14。最後不增加額外的10。

+0

如果你給它一個字符串'+'運算符連接它的參數。這意味着'mult'或'profit'是一個字符串。使用'parseInt()'和'parseFloat()'將一個字符串變成一個數字。 – Sidney

+1

這不是連接。它在不添加(或連接)的情況下進行乘法運算。如果連接,結果將是「11.1410」。在控制檯執行此操作:''1.114'*'10'+'10'' – ps2goat

+1

我無法重現。投票結束這個問題。 @請將您的問題編輯爲包含** Complete,Minimal和Verifiable示例**。 –

回答

1

的變量可能是字符串,請使用parseFloat將它們轉換爲數字:

mult = parseFloat(mult); 
profit = parseFloat(profit); 
price = (mult*profit) + profit 
+0

不回答這個問題。 –

+0

它的工作原理,但它不是十進制值它顯示21.00不是21.14 – raulxbox

+0

@raulxbox使用parseFloat()作爲更新的答案。 –

1

問題可能是multprofit類型爲string而不是number類型。這可以通過明確鑄造來解決。

您可以用typeof關鍵字這樣的決定在你的瀏覽器控制檯(即開發工具),你的變量類型:

typeof foo 

如果任你變量的類型string你可以將它們轉換爲number的與parseFloat

mult = parseFloat(mult); 
+0

的typeof MULT 「未定義」 的typeof利潤 「對象」 這是我在控制檯中看到 – raulxbox

+0

嘗試運行這些命令,而在調試器斷點,或者只是執行這些代碼行以'console'聲明 –

+0

我試圖和其工作mult = parseFloat(mult);但它沒有采用小數點它顯示21.00不是21.14 – raulxbox

3

這對我來說很好。似乎並不是一個問題,因爲否則值就是'11.1410'。

var mult = 1.114; 
 
var profit = 10; 
 
var price = (mult*profit) + profit; 
 
alert(price);//11.14 should be 21.14

如果profit變量(或兩個變量)是一個字符串,其結果將是 「11.1410」。

var mult = 1.114; 
 
    var profit = '10'; 
 
    var price = (mult*profit) + profit; 
 
    alert(price);//11.1410

結果似乎未受影響,如果只是mult值是一個字符串。

var mult = '1.114'; 
 
     var profit = 10; 
 
     var price = (mult*profit) + profit; 
 
     alert(price);//21.14

0

我只是跑這是在鉻JS控制檯F12關鍵。

var mult = 1.114, profit = 10; 
console.log('mult=', mult);//1.114 
console.log('profit=', profit);//10 
price = (mult*profit) + profit; 
console.log('price=', price);//11.14 should be 21.14 

,並得到這些結果

mult= 1.114 
profit= 10 
price= 21.14 
相關問題