Câu trả lời:
Tôi sẽ sử dụng toán tử unary plus để chuyển đổi chúng thành số đầu tiên.
+num1 + +num2;
Tài liệu MDN cho tài liệu MDN parseInt
cho parseFloat
Trong parseInt radix được chỉ định là mười để chúng ta ở trong cơ sở 10. Trong javascript không giới hạn, một số được thêm vào 0
được coi là bát phân. Điều này rõ ràng sẽ gây ra vấn đề!
parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)
Đồng thời xem câu trả lời của ChaosPandion cho một phím tắt hữu ích bằng cách sử dụng toán tử đơn nguyên . Tôi đã thiết lập một fiddle để hiển thị các hành vi khác nhau.
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'));
}
+num1 + +num2
ngắn hơn, thanh lịch hơn. Về cơ bản toán tử đơn nguyên +
chuyển đổi thànhNumber
Tôi khuyên bạn nên sử dụng toán tử cộng đơn nguyên, để buộc một chuỗi cuối cùng được coi là số, bên trong dấu ngoặc đơn để làm cho mã dễ đọc hơn như sau:
(+varname)
Vì vậy, trong trường hợp của bạn, đó là:
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);
chuyển đổi chuỗi thành floats
với parseFloat(string)
hoặc integers
vớiparseInt(string)
parseInt(string, 10)
xem developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
Nếu bạn cần thêm hai chuỗi với nhau với số lượng rất lớn, bạn sẽ cần đánh giá bổ sung ở mọi vị trí chuỗi:
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;
}
Bạn có thể sử dụng điều này để thêm số:
var x = +num1 + +num2;
thử
var x = parseFloat(num1) + parseFloat(num2) ;
hoặc, tùy thuộc vào nhu cầu của bạn:
var x = parseInt(num1) + parseInt(num2) ;
http://www.javascripter.net/faq/convert2.htm
Bạn có thể muốn chọn cuốn sách Javascript: The Good Parts , của Douglas Crockford. Javascript có một colleciton khá lớn của gotchas! Cuốn sách này đi một chặng đường dài để làm rõ chúng. Xem thêm
và bài tiểu luận xuất sắc của ông Crockford, Javascript: Ngôn ngữ lập trình sai lầm nhất thế giới .
Nếu bạn muốn thực hiện thao tác với các số dưới dạng chuỗi (như trong trường hợp số lớn hơn 64 bit có thể giữ), bạn có thể sử dụng thư viện số nguyên lớn .
const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
Tại đây, bạn có hai lựa chọn để làm điều này: -
1.Bạn có thể sử dụng dấu cộng đơn để chuyển đổi số chuỗi thành số nguyên.
2.Bạn cũng có thể đạt được điều này thông qua phân tích số thành loại tương ứng. tức là parseInt (), parseFloat () vv
.
Bây giờ tôi sẽ chỉ cho bạn ở đây với sự giúp đỡ của các ví dụ (Tìm tổng của hai số).
Sử dụng toán tử unary plus
<!DOCTYPE html>
<html>
<body>
<H1>Program for sum of two numbers.</H1>
<p id="myId"></p>
<script>
var x = prompt("Please enter the first number.");//prompt will always return string value
var y = prompt("Please enter the second nubmer.");
var z = +x + +y;
document.getElementById("myId").innerHTML ="Sum of "+x+" and "+y+" is "+z;
</script>
</body>
</html>
Sử dụng phương pháp phân tích cú pháp-
<!DOCTYPE html>
<html>
<body>
<H1>Program for sum of two numbers.</H1>
<p id="myId"></p>
<script>
var x = prompt("Please enter the first number.");
var y = prompt("Please enter the second number.");
var z = parseInt(x) + parseInt(y);
document.getElementById("myId").innerHTML ="Sum of "+x+" and "+y+" is "+z;
</script>
</body>
</html>
Bạn có thể sử dụng parseInt
để phân tích một chuỗi thành một số. Để ở bên an toàn của mọi thứ, luôn luôn vượt qua 10
như đối số thứ hai để phân tích cú pháp trong cơ sở 10.
num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
Hãy chắc chắn rằng bạn làm tròn câu trả lời cuối cùng của bạn xuống dưới 16 chữ số thập phân cho số float vì tập lệnh java bị lỗi.
Ví dụ 5 - 7.6 = -2.5999999999999996
@ cr05s19xx đề xuất về một câu hỏi trùng lặp:
JavaScript là một chút buồn cười khi nói đến số và bổ sung.
Đưa ra những điều sau đây
'20' - '30' = 10; // trả về 10 dưới dạng số '20' + '30' = '2030'; // Trả về chúng dưới dạng chuỗi Các giá trị được trả về từ document.getEuityById là các chuỗi, vì vậy tốt hơn là phân tích tất cả chúng (ngay cả chuỗi hoạt động) thành số, trước khi tiếp tục cộng hoặc trừ. Mã của bạn có thể là:
function myFunction() {
var per = parseInt(document.getElementById('input1').value);
var num = parseInt(document.getElementById('input2').value);
var sum = (num / 100) * per;
var output = num - sum;
console.log(output);
document.getElementById('demo').innerHTML = output;
}
function myFunction2() {
var per = parseInt(document.getElementById('input3').value);
var num = parseInt(document.getElementById('input4').value);
var sum = (num / 100) * per;
var output = sum + num;
console.log(output);
document.getElementById('demo1').innerHTML = output;
}
Tôi sử dụng điều này trong dự án của mình. Tôi sử dụng dấu + để coi chuỗi là một số (trong biến 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>
Hy vọng nó giúp
document.getElementById(currentInputChoosen).value -= +-100;
Hoạt động trong trường hợp của tôi, nếu bạn gặp phải vấn đề tương tự như tôi và không thể tìm ra giải pháp cho trường hợp đó và tìm câu hỏi SO này.
Xin lỗi vì một chút lạc đề, nhưng khi tôi phát hiện ra rằng điều này hoạt động, tôi nghĩ rằng nó có thể đáng để chia sẻ.
Không biết đó là một cách giải quyết bẩn thỉu, hay thực sự hợp pháp.
Hãy thử điều này nếu bạn đang tìm kiếm mã Javascript đơn giản và muốn sử dụng hai hộp nhập liệu và thêm số từ hai giá trị. Đây là mã.
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>
để biết thêm chi tiết, vui lòng truy cập http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html