我有隻包含數字兩個字符串:如何添加兩個字符串,就好像它們是數字一樣?
var num1 = '20',
num2 = '30.5';
我本來期望,我將它們加在一起,但它們被連接在一起,而不是:
num1 + num2; // = '2030.5'
我如何可以強制這些字符串被視爲數字?
我有隻包含數字兩個字符串:如何添加兩個字符串,就好像它們是數字一樣?
var num1 = '20',
num2 = '30.5';
我本來期望,我將它們加在一起,但它們被連接在一起,而不是:
num1 + num2; // = '2030.5'
我如何可以強制這些字符串被視爲數字?
我會用一元加號運營商他們先轉換爲數字。
+num1 + +num2;
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有用的快捷方式。我設置了一個小提琴來展示不同的行爲。
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'));
}
使用parseFloat()如果你有小數。 :) –
此外,你真的應該指定基數爲10. – ChaosPandion
而'+ num1 + + num2'更短,可以說更優雅。基本上一元'+'操作符轉換爲'Number' – Raynos
的字符串轉換爲floats
與parseFloat(string)
或integers
與parseInt(string)
或(如果你只想要整數)'parseInt(string,10)'見https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt –
您可以使用parseInt
將字符串解析爲數字。要對事物的安全起見,總是傳遞10
作爲第二個參數10爲基數
num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
使用parseFloat
方法來解析該字符串解析成浮點數:
parseFloat(num1) + parseFloat(num2)
試
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。
我會建議使用一元加運算符,迫使最終字符串被當作數字,括號內做出類似下面的代碼更易讀:
(+varname)
所以,你的情況是:
var num1 = '20',
num2 = '30.5';
var sum = (+num1) + (+num2);
// Just to test it
console.log(sum); // 50.5
var result = Number(num1) + Number(num2);
試試這個,如果你正在尋找簡單的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
確保你圓你的最終答案少於16位小數花車爲Java腳本是馬車。
例如 5 - 7.6 = -2.5999999999999996
JavaScript不是bug,它使用與其他所有內容相同的IEEE754浮點。您記下的不精確性是對您指定的數字使用二進制浮點運算並以十進制顯示的自然結果。 –
您可以使用它來添加數字:
var x = +num1 + +num2;
我一直只是減去零。
num1-0 + num2-0;
誠然,單目運算符的方法是少了一個字,但不是每個人都知道一元運算符是什麼或怎麼Google查找出來的時候,他們不知道它叫什麼。
我用這個在我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>
希望它可以幫助
你可以使用這樣的:
var num1 = '20',
num2 = '30.5';
alert((num1*1) + (num2*1)); //result 50.5
在num1中應用* 1時,將字符串轉換爲數字。
如果NUM1包含一個字母或一個逗號,返回NaN 1
乘以NUM1是否爲空,NUM1返回0
親切的問候!
如果要以數字作爲字符串執行操作(如數字大於64位的情況下可以存儲),可以使用big-integer庫。
const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
如果您需要添加兩個串在一起,該是你需要評估除了在每個字符串的位置非常大的數字:
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;
}
這是一個很好的答案! – trusktr
非常酷。感謝分享這個。我發現這篇文章描述了一元加運算符以及它對不同數據類型的一些有用影響。 http://xkr.us/articles/javascript/unary-add/ – mrtsherman
但是,如果這些數字大於2^53,則必須創建一個函數來添加部分字符串並將其傳遞到每個部分在一個循環中。 :D – trusktr
這給了我一個錯誤,所以我用parseFloat()代替。 – Hawkee