Как добавить две строки, как если бы они были числами? - PullRequest
152 голосов
/ 23 января 2012

У меня есть две строки, которые содержат только цифры:

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

Я бы ожидал, что смогу добавить их вместе, но вместо этого они объединяются:

num1 + num2; // = '2030.5'

Как можноЯ заставляю эти строки рассматриваться как числа?

Ответы [ 20 ]

2 голосов
/ 20 июня 2018
function sum(){
    var x,y,z;
    x = Number(document.getElementById("input1").value);
    y = Number(document.getElementById("input2").value);
    z = x + y;
    document.getElementById("result").innerHTML = z ;
}
2 голосов
/ 26 ноября 2016

Если вы хотите выполнить операцию с числами в виде строк (как в случае, когда числа больше 64 бит), вы можете использовать библиотеку big-integer .

const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
1 голос
/ 23 января 2012

Вы можете использовать parseInt для разбора строки на число.Чтобы быть в безопасности, всегда передавайте 10 в качестве второго аргумента для разбора в базе 10.

num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
1 голос
/ 30 сентября 2013

Убедитесь, что вы округлили свой окончательный ответ до 16 знаков после запятой для чисел с плавающей запятой, поскольку скрипт java содержит ошибки.

Например 5 - 7,6 = -2,5999999999999996

0 голосов
/ 16 июня 2019
document.getElementById(currentInputChoosen).value -= +-100;

В моем случае работает, если вы сталкиваетесь с той же проблемой, что и я, и не можете найти решение для этого случая и нашли этот ТАК вопрос.

Извините за немного не по теме, но, как только я узнал, что это работает, я подумал, что стоит поделиться.

Не знаю, грязный ли это обходной путь или действительно законный.

0 голосов
/ 13 февраля 2019

@ cr05s19xx предложил по дублирующему вопросу:

JavaScript немного смешной, когда дело доходит до чисел и сложений.

Предоставление следующего

'20 '-'30 '= 10;// возвращает 10 как число '20' + '30' = '2030';// Возвращает их в виде строки. Значения, возвращаемые из document.getElementById, являются строками, поэтому лучше проанализировать их все (даже те, которые работают) для нумерации, прежде чем продолжить сложение или вычитание.Ваш код может быть:

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;
}
0 голосов
/ 17 сентября 2014

Вы можете использовать так:

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

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

Когда применяется * 1 в num1, преобразуйте строку в число.

, если num1 содержит букву или запятую, возвращает NaN, умноженное на 1

если num1 равен нулю, num1 возвращает 0

С уважением !!!

0 голосов
/ 10 июля 2014

Я использую это в своем проекте. Я использую знак +, чтобы рассматривать строку как число (в переменной 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 голосов
/ 25 декабря 2012

Попробуйте, если вы ищете простой код 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 голосов
/ 23 января 2012

Используйте метод parseFloat для разбора строк на числа с плавающей запятой:

parseFloat(num1) + parseFloat(num2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...