Строка ошибки «Ссылка на объект, не установленная на экземпляр объекта.» указывает, что вы не назначили экземпляр объекта объектной ссылке, и все же вы получаете доступ к свойствам / методам этого объекта.
например: скажем, у вас есть класс под названием myClass и он содержит одно свойство prop1.
public Class myClass
{
public int prop1 {get;set;}
}
Теперь вы получаете доступ к этому prop1 в каком-то другом классе, как показано ниже:
public class Demo
{
public void testMethod()
{
myClass ref = null;
ref.prop1 = 1; //This line throws error
}
}
выше строки выдает ошибку, потому что ссылка класса myClass объявлена, но не создана, или экземпляр объекта не назначается referecne этого класса.
Чтобы исправить это, вам нужно создать экземпляр (присвоить объект ссылке на этот класс).
public class Demo
{
public void testMethod()
{
myClass ref = null;
ref = new myClass();
ref.prop1 = 1;
}
}
Я бы использовал оператор унарного плюса, чтобы сначала преобразовать их в числа.
+num1 + +num2;
Я всегда просто вычитал нуль.
num1-0 + num2-0;
Предположил, что унарный операторный метод является одним меньшим персонажем, но не все знают, что такое унарный оператор или как google, чтобы узнать, когда они не знаю, как это называется.
Вы можете использовать parseInt
для разбора строки на число. Чтобы быть в безопасности, всегда передавайте 10
в качестве второго аргумента для анализа в базе 10.
num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
Используйте метод parseFloat
для синтаксического анализа строк в числах с плавающей запятой:
parseFloat(num1) + parseFloat(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
попробуйте
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 имеет довольно значительную коллекцию gotchas! Эта книга проделала долгий путь к их разъяснению. См. Также
и превосходный очерк г-на Крокфорда, Javascript: самый неверный язык программирования в мире .
преобразует строки в floats
с parseFloat(string)
или integers
с parseInt(string)
Если вам нужно добавить две строки вместе, которые являются очень большими числами, вам нужно будет оценить добавление в каждой строковой позиции:
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;
}
Я бы рекомендовал использовать оператор унарного плюса, чтобы принудительно обрабатывать возможную строку как число в скобках, чтобы сделать код более читаемым, например:
(+varname)
Итак, в вашем это:
var num1 = '20',
num2 = '30.5';
var sum = (+num1) + (+num2);
// Just to test it
console.log( sum ); // 50.5
Если вы хотите выполнить операцию с числами как строки (как в случае, если число может превышать 64 бит), вы можете использовать библиотеку с большим числом .
const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
MDN docs для parseInt MDN docs для parseFloat
В parseInt radix указано как десять, так что мы находимся в базе 10. В нестрочном javascript число, добавленное с 0
, рассматривается как восьмеричное. Это, очевидно, вызовет проблемы!
parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)
Также см. Ответ ChaosPandion на полезный ярлык с помощью унарного оператора . Я установил скрипт, чтобы показать разные типы поведения.
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'));
}
Убедитесь, что вы округлили свой окончательный ответ до 16 знаков после запятой для поплавков, поскольку java-скрипт неисправен.
Например, 5 - 7.6 = -2.5999999999999996
Я использую это в своем проекте. Я использую знак + для обработки строки как числа (в переменной in_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
При применении * 1 в num1, преобразовать строку в число.
, если num1 содержит букву или запятую, возвращает NaN умножение по 1
, если num1 является нулевым, num1 возвращает 0
вид привет !!!
Вы можете использовать это, чтобы добавить числа:
var x = +num1 + +num2;
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 ;
}