2012-01-23 145 views

回答

251

我會用一元加號運營商他們先轉換爲數字。

+num1 + +num2; 
+8

非常酷。感謝分享這個。我發現這篇文章描述了一元加運算符以及它對不同數據類型的一些有用影響。 http://xkr.us/articles/javascript/unary-add/ – mrtsherman

+4

但是,如果這些數字大於2^53,則必須創建一個函數來添加部分字符串並將其傳遞到每個部分在一個循環中。 :D – trusktr

+1

這給了我一個錯誤,所以我用parseFloat()代替。 – Hawkee

15

MDN docs for parseInt
MDN docs for parseFloat

在parseInt函數基數被指定爲10,從而,我們是在基座10的javascript非嚴格的數前面添加0被視爲八進制。這顯然會導致問題!

parseInt(num1, 10) + parseInt(num2, 10) //base10 
parseFloat(num1) + parseFloat(num2) 

另見ChaosPandion的答案使用unary operator有用的快捷方式。我設置了一個小提琴來展示不同的行爲。

http://jsfiddle.net/EtX6G/

var ten = '10'; 
var zero_ten = '010'; 
var one = '1'; 
var body = document.getElementsByTagName('body')[0]; 

Append(parseInt(ten) + parseInt(one)); 
Append(parseInt(zero_ten) + parseInt(one)); 
Append(+ten + +one); 
Append(+zero_ten + +one); 

function Append(text) { 
    body.appendChild(document.createTextNode(text)); 
    body.appendChild(document.createElement('br')); 
} 
+2

使用parseFloat()如果你有小數。 :) –

+1

此外,你真的應該指定基數爲10. – ChaosPandion

+0

而'+ num1 + + num2'更短,可以說更優雅。基本上一元'+'操作符轉換爲'Number' – Raynos

6

的字符串轉換爲floatsparseFloat(string)integersparseInt(string)

+1

或(如果你只想要整數)'parseInt(string,10)'見https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt –

0

您可以使用parseInt將字符串解析爲數字。要對事物的安全起見,總是傳遞10作爲第二個參數10爲基數

num1 = parseInt(num1, 10); 
num2 = parseInt(num2, 10); 
alert(num1 + num2); 
0

使用parseFloat方法來解析該字符串解析成浮點數:

parseFloat(num1) + parseFloat(num2) 
2

var x = parseFloat(num1) + parseFloat(num2) ; 

,或者根據您的需要:

var x = parseInt(num1) + parseInt(num2) ; 

http://www.javascripter.net/faq/convert2.htm

你可能想拿起書Javascript: The Good Parts,由Douglas Crockford的。 Javascript有一個相當大的陷阱集合!這本書在澄清它們方面有很長的路要走。另請參見

和克羅克福德先生的優秀作文,Javascript: The World's Most Misunderstood Programming Language

9

我會建議使用一元加運算符,迫使最終字符串被當作數字,括號內做出類似下面的代碼更易讀:

(+varname) 

所以,你的情況是:

var num1 = '20', 
    num2 = '30.5'; 

var sum = (+num1) + (+num2); 

// Just to test it 
console.log(sum); // 50.5 
8
var result = Number(num1) + Number(num2); 
-1

試試這個,如果你正在尋找簡單的Javascript代碼,並希望使用兩個輸入框和兩個值加號。這是代碼。

Enter the first number: <input type="text" id="num1" /><br /> 
    Enter the seccond number: <input type="text" id="num2" /><br /> 
    <input type="button" onclick="call()" value="Add"/> 

    <script type="text/javascript"> 
    function call(){ 
    var q=parseInt(document.getElementById("num1").value); 
    var w=parseInt(document.getElementById("num2").value); 
    var result=q+w; 
    } 
    </script> 

瞭解更多詳情請訪問:http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html

0

確保你圓你的最終答案少於16位小數花車爲Java腳本是馬車。

例如 5 - 7.6 = -2.5999999999999996

+1

JavaScript不是bug,它使用與其他所有內容相同的IEEE754浮點。您記下的不精確性是對您指定的數字使用二進制浮點運算並以十進制顯示的自然結果。 –

4

您可以使用它來添加數字:

var x = +num1 + +num2; 
1

我一直只是減去零。

num1-0 + num2-0; 

誠然,單目運算符的方法是少了一個字,但不是每個人都知道一元運算符是什麼或怎麼Google查找出來的時候,他們不知道它叫什麼。

0

我用這個在我project.I使用+符號來治療字符串作爲一個數字(with_interesst變量)

<script> 
function computeLoan(){ 
var amount = document.getElementById('amount').value; 
var interest_rate = document.getElementById('interest_rate').value; 
var days = document.getElementById('days').value; 
var interest = (amount * (interest_rate * .01))/days; 
var payment = ((amount/days) + interest).toFixed(2); 
var with_interest = (amount * (interest_rate * .01)); 
var with_interesst = (+amount * (interest_rate * .01)) + (+amount); 
payment = payment.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
document.getElementById('payment').innerHTML = "Target Daily = PHP"+payment; 
document.getElementById('with_interesst').innerHTML = "Amount w/Interest = PHP"+with_interesst; 
} 
</script> 

<div name="printchatbox" id="printchatbox"> 
<form id="Calculate" class="form-horizontal"> 
    <h2>You Can Use This Calculator Before Submit </h2> 
    <p>Loan Amount: PHP<input id="amount" type="number" min="1" max="1000000" onchange="computeLoan()"></p> 
    <p>Interest Rate: <input id="interest_rate" type="number" min="0" max="100" value="10" step=".1" onchange="computeLoan()">%</p> 
    <p>Term<select id="days" type="number" min="1" max="72" step=".1" onchange="computeLoan()"> 
    <option value="40">40 Days</option> 
    <option value="50">50 Days</option> 
    <option value="60">60 Days</option> 
    <option value="70">70 Days</option> 
    <option value="80">80 Days</option> 
    <option value="90">90 Days</option> 
    <option value="100">100 Days</option> 
    <option value="120">120 Days</option> 
    </select> 
    </p>       
    <h2 id="payment"></h2> 
    <h2 id ="with_interesst"></h2> 
</form> 
</div> 

希望它可以幫助

0

你可以使用這樣的:

var num1 = '20', 
    num2 = '30.5'; 

alert((num1*1) + (num2*1)); //result 50.5 

在num1中應用* 1時,將字符串轉換爲數字。

如果NUM1包含一個字母或一個逗號,返回NaN 1

乘以NUM1是否爲空,NUM1返回0

親切的問候!

0

如果要以數字作爲字符串執行操作(如數字大於64位的情況下可以存儲),可以使用big-integer庫。

const bigInt = require('big-integer') 
bigInt("999").add("1").toString() // output: "1000" 
1

如果您需要添加兩個串在一起,該是你需要評估除了在每個字符串的位置非常大的數字:

function addStrings(str1, str2){ 
    str1a = str1.split('').reverse(); 
    str2a = str2.split('').reverse(); 
    let output = ''; 
    let longer = Math.max(str1.length, str2.length); 
    let carry = false; 
    for (let i = 0; i < longer; i++) { 
    let result 
    if (str1a[i] && str2a[i]) { 
     result = parseInt(str1a[i]) + parseInt(str2a[i]); 

    } else if (str1a[i] && !str2a[i]) { 
     result = parseInt(str1a[i]); 

    } else if (!str1a[i] && str2a[i]) { 
     result = parseInt(str2a[i]); 
    } 

    if (carry) { 
     result += 1; 
     carry = false; 
    } 
    if(result >= 10) { 
     carry = true; 
     output += result.toString()[1]; 
    }else { 
     output += result.toString(); 
    } 
    } 
    output = output.split('').reverse().join(''); 

    if(carry) { 
    output = '1' + output; 
    } 
    return output; 
} 
+1

這是一個很好的答案! – trusktr

相關問題