Ошибка на строке nan запустить

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 program UpdateGraph;  uses Graph,Crt;  var xMax,yMax,i:integer;      st:string[10];        x:extended;    procedure GraphInit;  var   grDriver,grMode,ErrCode: integer;  begin   grDriver := Detect;   InitGraph(grDriver, grMode,'');   ErrCode := GraphResult;   if ErrCode <> grOk then    begin     Writeln('Graphics error:', GraphErrorMsg(ErrCode));     ReadKey;     Halt;    end;   xMax:=GetMaxX; yMax:=GetMaxY;  end;    procedure Body;{MainForm}  begin   Line(xMax-140,3,xMax-140,yMax-3);   Line(62,450,xMax-140,450);   OutTextXY(508,10,'y = a*cos(x)+b*x');   OutTextXY(507,300,'a =');   OutTextXY(507,317,'b =');     OutTextXY(386,461,'Close');   Rectangle(380,455,430,474);   OutTextXY(186,461,'Input');   Rectangle(180,455,230,474);   OutTextXY(266,461,'Clear');   Rectangle(260,455,310,474);     OutTextXY(536,34,'x');   OutTextXY(590,34,'y');   Line(516,45,623,45);   Line(562,30,562,270);   Rectangle(xMax-123,30,xMax-16,270);  end;    procedure Coord;{CoordinateNet}  var   NumHoriz,NumVert:string[10];  begin   for i:=-10 to 10 do    begin     Str(i,NumHoriz);     case i of      0..9:OutTextXY(270+(21*i),438,NumHoriz);      10:OutTextXY(475,438,NumHoriz);      -9..-1:OutTextXY(262+(21*i),438,NumHoriz);     end;    end;      for i:=-10 to 10 do     begin      Str(i*10,NumVert);      case i of      -9..-1:OutTextXY(33,221+(-21*i),NumVert);      0:OutTextXY(48,222,NumVert);      1..9:OutTextXY(40,220+(-21*i),NumVert);      10:OutTextXY(33,12,NumVert);      end;     end;    SetColor(DarkGray);  Rectangle(62,14,482,433);                 {Vertical lines}    for i:=1 to 20 do    begin     case i of      1..10:Line(41+(21*i),14,41+(21*i),433);      12..19:Line(41+(21*i),14,41+(21*i),433);      20:Line(41+(21*i),35,41+(21*i),433);     end;    end;               {Horizontal lines}    for i:=1 to 19 do    begin     case i of      1..9:Line(63,14+(21*i),482,14+(21*i));      11..19:Line(63,14+(21*i),482,14+(21*i));     end;    end;    SetColor(LightGreen);  Line(272,14,272,433);  Line(62,225,482,225);  SetColor(White);  end;    procedure xValues;  begin   for i:=1 to 21  do    begin    x:=-11+i;    Str(x:2:0,st);    OutTextXY(530,44+(10*i),st);    end;     end;    Begin     GraphInit;   Body;   Coord;   xValues;   ReadKey;    End.

NaN в JavaScript

От автора: В данной статье мы познакомимся со специальным свойством NaN (Not-A-Number), которое является значением, представляющим не-число.

Тип числа в JavaScript содержит целые числа и числа с плавающей запятой:

const integer = 4;

const float = 1.5;

typeof integer; // => ‘number’

typeof float;   // => ‘number’

Плюс есть два специальных числовых значения: Infinity (число больше, чем любое другое число) и NaN (представляющее концепцию «не число»):

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнее

const infinite = Infinity;

const faulty = NaN;

typeof infinite; // => ‘number’

typeof faulty;   // => ‘number’

Хотя непосредственная работа с NaN редко встречается, оно может неожиданно появиться после неудачной операции с числами.

Давайте подробно рассмотрим специальное значение NaN: как проверить, содержит ли переменная NaN, и сценарии, которые в которых генерируется значения «не число».

1. Число NaN

Тип числа в JavaScript — это набор всех числовых значений, включая «не число», положительную бесконечность и отрицательную бесконечность.

«Not A Number» можно получить с помощью специального выражения NaN или как свойство глобального объекта или функции Number:

typeof NaN;        // => ‘number’

typeof window.NaN; // => ‘number’

typeof Number.NaN; // => ‘number’

«Не число» — это значение, которое не представляет действительное число, несмотря на то, что оно имеет тип числа. Через NaN полезно представлять ошибочные операции с числами. Например, умножение числа на undefined не является допустимой операцией, поэтому дает NaN:

Также попытка разобрать недопустимую числовую строку, например, ‘Joker’ приводит к NaN:

parseInt(‘Joker’, 10); // => NaN

2. Проверка на равенство с NaN

Интересным свойством NaN является то, что оно не равно ни одному значению, даже самому себе:

Это поведение полезно для определения, является ли переменная NaN:

const someNumber = NaN;

if (someNumber !== someNumber) {  console.log(‘Is NaN’);

} else {

  console.log(‘Is Not NaN’);

}

// logs «Is NaN»

Выражение someNumber !== someNumber равно true, только если someNumber является NaN. Таким образом, приведенный выше фрагмент регистрирует в консоли «Is NaN». JavaScript содержит встроенные функции для определения NaN: isNaN() и Number.isNaN():

isNaN(NaN); // => true

isNaN(1);   // => false

Number.isNaN(NaN); // => true

Number.isNaN(1);   // => false

Разница между этими функциями заключается в том, что Number.isNaN() не преобразуется свой аргумент в число:

isNaN(‘Joker12’);        // => true

Number.isNaN(‘Joker12’); // => false

isNaN(‘Joker12’) преобразует аргумент ‘Joker12’ в число, которое является NaN. Таким образом, функция возвращает true.

С другой стороны, Number.isNaN(‘Joker12’) проверяет аргумент без преобразования. Функция возвращает false, потому ‘Joker12’ не равно NaN.

3. Операции, дающие NaN

3.1 Парсинг чисел

В JavaScript вы можете преобразовать числовые строки в числа. Например, вы можете легко преобразовать строку ‘1.5’ в число с плавающей запятой 1.5:

const numberString = ‘1.5’;

const number = parseFloat(numberString);

number; // => 1.5

Когда строка не может быть преобразована в число, функция синтаксического анализа возвращает NaN: указывая, что синтаксический анализ не выполнен. Вот некоторые примеры:

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнее

parseFloat(‘Joker12.5’); // => NaN

parseInt(‘Joker12’, 10); // => NaN

Number(‘Joker12’);       // => NaN

При парсинге чисел рекомендуется проверить, не является ли результат парсинга NaN:

let inputToParse = ‘Invalid10’;

let number;

number = parseInt(inputToParse, 10);

if (isNaN(number)) {  number = 0;

}

number; // => 0

Парсинг inputToParse не удался, поэтому parseInt(inputToParse, 10) возвращается NaN. Условие if (isNaN(number)) оценивается, как true, и 0 назначается number.

3.2 undefined в качестве операнда

При использовании undefined в качестве операнда в арифметических операциях, таких как сложение, умножение и т д. мы получаем NaN. Например:

function getFontSize(style) {

  return style.fontSize;

}

const fontSize = getFontSize({ size: 16 }) * 2;

const doubledFontSize = fontSize * 2;

doubledFontSize; // => NaN

getFontSize() — это функция, которая обращается к свойству fontSize из объекта стиля. При вызове getFontSize({ size: 16 }) результатом будкт undefined (свойство fontSize не существует в объекте { size: 16 }). fontSize * 2 оценивается как undefined * 2, что дает NaN.

«Not A Number» генерируется, когда в качестве значения в арифметических операциях используется отсутствующее свойство или функция, возвращающая undefined. Отсутствие undefined в арифметических операциях — это хороший способ предотвратить получение NaN.

3.3 NaN как операнд

Значение NaN также генерируется, когда операндом в арифметических операциях является NaN:

1 + NaN; // => NaN

2 * NaN; // => NaN

NaN распространяется на арифметические операции:

let invalidNumber = 1 * undefined;

let result = 1;

result += invalidNumber; // appendresult *= 2;             // duplicate

result++;                // increment

result; // => NaN

Операции с переменной result прерываются после добавления к result значения invalidNumber (которое является NaN).

3.4 Неопределенные формы

Значение NaN создается, когда арифметические операции имеют неопределенные формы. Деление 0 / 0 и Inifinity / Infinity:

0 / 0;               // => NaN

Infinity / Infinity; // => NaN

Умножение 0 и Infinity:

Сложение бесконечных чисел с разными знаками:

Infinity + Infinity; // => NaN

3.5 Неверные аргументы математических функций

Квадратный корень из отрицательного числа:

Math.pow(2, 0.5); // => NaN

(2) ** 0.5;       // => NaN

Или логарифм отрицательного числа:

4. Заключение

Понятие «не число», выраженное в JavaScript с помощью NaN, полезно для представления ошибочных операций над числами. NaN не равно ни одному значению, даже самому себе. Рекомендуемый способ проверить, содержит ли переменная NaN — использовать Number.isNaN(value).

Преобразование числовых строк в числа, в случае неудачи может дать NaN. Рекомендуется проверять, не возвращают ли parseInt(), parseFloat() или Number() NaN.

Если undefined или NaN используются в качестве операнда в арифметических операциях, это обычно приводит к NaN. Правильная обработка undefined (предоставление значений по умолчанию для отсутствующих свойств) является рекомендованным подходом для предотвращения этой ситуации.

Неопределенные формы или недопустимые аргументы для математических функций также приводят получению NaN. Но это случается редко. Вот мой практический совет: «Получили NaN? Ищите undefined!»

Автор: Dmitri Pavlutin

Источник: //dmitripavlutin.com

Редакция: Команда webformyself.

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнее

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Смотреть

Неописанная переменная

begin S := 1; // Неизвестное имя S end. 

Все используемые переменные должны быть предварительно описаны с помощью ключевого слова var (внутри блока begin/end или, что обычно хуже, в разделе описаний вначале программы).

Отсутствующая ;

begin var S: integer S := 1; // Компилятор здесь скажет: Ожидалась ; — имеется ввиду предыдущая строка! end. 
begin var S := 1 S := S + 1 // Аналогично: проблема на предыдущей строке, а на текущей нет, потому что после неё идёт end. end. 

Очень частая ошибка у начинающих. Курсор, как правило, позиционируется в начале следующей строки.

Несовместимость типов при присваивании

begin var S: integer := 1.3; // Нельзя преобразовать тип real к integer end. 

Безболезненно можно присваивать только данные одного типа. Если данные — разных типов, то в редких случаях можно преобразовать данные одного типа в данные другого. Например, целое можно преобразовать в вещественное, а символ — в строку. Обратные преобразования не допускаются.

Чтобы не ошибаться в подобных простых случаях в Паскале есть следующая краткая форма объявления и инициализации переменной:

begin var S := 1.3; // Тип real будет выведен компилятором автоматически end. 

Отсутствие закрывающего апострофа литеральной строки

begin var x := 2; // x получает тип integer var y := 3; // y получает тип integer writeln('Результат сложения равен =, x + y); // Не хватает закрывающего апострофа end. 

Закрыть апостроф надо на той же строке, где расположен открывающий апостроф

Ошибки расстановки запятых и апострофов при выводе строк и выражений

begin var x := 2; // x получает тип integer var y := 3; // y получает тип integer writeln(x, '+,' y, '=', x+y); // Неверная расстановка запятых и апострофов end. 

Слишком много запятых и апострофов рядом, потому начинающие часто путаются  :)
Надо уяснить правила:

  • запятые разделяют разные элементы вывода
  • все, что находится в апострофах, будет выведено на экран без изменений

Ошибка ввода

begin var x: integer; read(x); // введите блаблабла и посмотрите, что получится end. 

Это — ошибка во время выполнения. Программа пытается преобразовать введенную строку в число, не может это сделать и завершается с ошибкой.

Аналогичный фрагмент в более современном и предпочтительном синтаксисе:

begin var x := ReadInteger; end. 

Ошибка неинициализированной переменной

begin var x: integer; // Забыли инициализировать или ввести x var r := x * x; // r получает тип integer writeln('Квадрат числа ', x, ' = ', r); end. 

Перед использованием любую переменную надо ввести или присвоить ей начальное значение. Это действие называется инициализацией переменной.

Деление на 0

begin var x := 0; var c := 666 div x; // Здесь происходит деление на 0 end. 

Если во время выполнения программа выполнит деление на 0, то она завершится с ошибкой.

Корень из отрицательного числа

begin writeln(sqrt(-1)); // Корень из отрицательного числа  end. 

В обычном Паскале возникает ошибка времени выполнения.
В PascalABC.NET выводится NaN — Not a Number

Ссылки

  • Программы для начинающих
  • Сайт PascalABC.NET: Программы и алгоритмы для начинающих

При таком коде:

while(u)
{
sum += u->d.a; 
++count;
}

u в цикле не меняется, поэтому мы получим бесконечный цикл, если u != 0 либо, если u == 0 совсем не зайдем в цикл, и в дальнейшем получим деление нуля на ноль, что в результате дает значение «не является числом» (Not-a-Number, NaN).

Из википедии:

К операциям, приводящим к появлению NaN в качестве ответа, относятся:

  • деление нуля на ноль

Подробнее о делении нуля на нуль

u в Вашем коде равен нулю потому, что в цикле вывода Вы его меняете:

while(u)
{
cout << u->d.a << endl; 
u = u->next;         
}

после этого цикла u будет равен нулю.

Для исправления чуть переделаем код:

  // Vivod (prosto idem po spisku)
List *p = u;//введем указатель, который будем использовать для прохода по списку перед выводом
while (p) {//В цикле работаем только с p, а не с u
cout << p->d.a << endl;
p = p->next;
}
// srednee arifm
if (u) {//Список не пуст
int sum = 0, count = 0;
p = u;//снова ставим p в равным u, для прохода с начала списка
while(p)//в цикле также работаем с p, а не с u
{
sum += p->d.a; 
++count;
p = p->next;//не забываем перейти к следующему элементу
}
cout << "Average = " << double(sum)/count << endl;
} else {
cout << "Empty list" << endl;
} 

Также Вы забыли про освобождение памяти.
Но в любом случае, Ваш список — это подход, скорее, для языка C, а не для C++.

Improve Article

Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    NaN, an acronym for Not a Number is an exception that usually occurs in the cases when an expression results in a number that is undefined or can’t be represented. It is used for floating-point operations. For example:

    • The square root of negative numbers
    • Division by zero
    • Taking the log of zero or a negative number etc.

    CPP

    #include <cmath>

    #include <iostream>

    using namespace std;

    int main()

    {

        float a = 2, b = -2;

        cout << sqrt(a) << endl;

        cout << sqrt(b) << endl;

        return 0;

    }

    How to check for NaN in C++?

    Method 1: Using compare (“==”) operator. 

    In this method, we check if a number is complex by comparing it with itself. If the result is true, then the number is not complex i.e., real. But if the result is false, then “nan” is returned, i.e. the number is complex.

    CPP

    #include <cmath>

    #include <iostream>

    using namespace std;

    int main()

    {

        float a = sqrt(2);

        float b = sqrt(-2);

        a == a ? cout << "Its a real number" << endl

               : cout << "Its NaN" << endl;

        b == b ? cout << "Its a real number" << endl

               : cout << "Its NaN" << endl;

        return 0;

    }

    Output

    Its a real number Its NaN

    Method 2: Using inbuilt function “isnan()”

    Another way to check for NaN is by using “isnan()” function, this function returns true if a number is complex else it returns false. This C library function is present in <cmath> header file.

    CPP

    #include <cmath>

    #include <iostream>

    using namespace std;

    int main()

    {

        float a = sqrt(2);

        float b = sqrt(-2);

        isnan(a) ? cout << "Its NaN" << endl

                 : cout << "Its a real number" << endl;

        isnan(b) ? cout << "Its NaN" << endl

                 : cout << "Its a real number" << endl;

        return 0;

    }

    Output

    Its a real number Its NaN

    This article is contributed by Manjeet Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

    Improve Article

    Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    NaN, an acronym for Not a Number is an exception that usually occurs in the cases when an expression results in a number that is undefined or can’t be represented. It is used for floating-point operations. For example:

    • The square root of negative numbers
    • Division by zero
    • Taking the log of zero or a negative number etc.

    CPP

    #include <cmath>

    #include <iostream>

    using namespace std;

    int main()

    {

        float a = 2, b = -2;

        cout << sqrt(a) << endl;

        cout << sqrt(b) << endl;

        return 0;

    }

    How to check for NaN in C++?

    Method 1: Using compare (“==”) operator. 

    In this method, we check if a number is complex by comparing it with itself. If the result is true, then the number is not complex i.e., real. But if the result is false, then “nan” is returned, i.e. the number is complex.

    CPP

    #include <cmath>

    #include <iostream>

    using namespace std;

    int main()

    {

        float a = sqrt(2);

        float b = sqrt(-2);

        a == a ? cout << "Its a real number" << endl

               : cout << "Its NaN" << endl;

        b == b ? cout << "Its a real number" << endl

               : cout << "Its NaN" << endl;

        return 0;

    }

    Output

    Its a real number Its NaN

    Method 2: Using inbuilt function “isnan()”

    Another way to check for NaN is by using “isnan()” function, this function returns true if a number is complex else it returns false. This C library function is present in <cmath> header file.

    CPP

    #include <cmath>

    #include <iostream>

    using namespace std;

    int main()

    {

        float a = sqrt(2);

        float b = sqrt(-2);

        isnan(a) ? cout << "Its NaN" << endl

                 : cout << "Its a real number" << endl;

        isnan(b) ? cout << "Its NaN" << endl

                 : cout << "Its a real number" << endl;

        return 0;

    }

    Output

    Its a real number Its NaN

    This article is contributed by Manjeet Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

    Цитата
    Сообщение от Puporev
    Посмотреть сообщение

    Отрицательные числа нельзя возводить в вещественную степень

    Вообще-то, можно. Только вот калькулятор не может выдавать результат в виде нескольких чисел или в виде формулы.

    При возведении отрицательного числа в вещественную степень в результате получается не одно вещественное число, как полагают многие, а несколько комплексных чисел, мало того, этих комплексных чисел будет бесконечное множество, если показатель степени не рациональный.

    Примеры:

    https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
sqrt{-1}=(-1)^{1/2}=(-1)^{0.5}<br />
    имеет два значения: i и -i. Если возвести любое из этих чисел в квадрат, получим -1, точнее, -1+0i.

    https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
sqrt[3]{-1}=(-1)^{1/3}<br />
    имеет три значения:
    https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
-1; 0.5+frac{sqrt{3}}{2}i; 0.5-frac{sqrt{3}}{2}i<br />
    Если возвести любое из этих чисел в куб, получим -1, точнее, -1+0i

    https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
(-1)^{pi }<br />
    имеет бесконечное множество значений
    https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
(-1)^{pi }=e^{pi operatorname{Ln}(-1)}=e^{ipi operatorname{arctg}(2pi n)},   nin mathbb{Z}<br />
    Здесь Ln — комплексный логарифм (функция многозначная), https://www.cyberforum.ru/cgi-bin/latex.cgi?small mathbb{Z} — множество целых чисел.
    Если возвести любое из чисел eiπarctg(2πn) в степень 1/

    π, то одно из бесконечного множества чисел результата будет равно -1, точнее, -1+0i.

    Примечание: i — мнимая единица.

    NaN в JavaScript

    От автора: В данной статье мы познакомимся со специальным свойством NaN (Not-A-Number), которое является значением, представляющим не-число.

    Тип числа в JavaScript содержит целые числа и числа с плавающей запятой:

    const integer = 4;

    const float = 1.5;

    typeof integer; // => ‘number’

    typeof float;   // => ‘number’

    Плюс есть два специальных числовых значения: Infinity (число больше, чем любое другое число) и NaN (представляющее концепцию «не число»):

    JavaScript. Быстрый старт

    Изучите основы JavaScript на практическом примере по созданию веб-приложения

    Узнать подробнее

    const infinite = Infinity;

    const faulty = NaN;

    typeof infinite; // => ‘number’

    typeof faulty;   // => ‘number’

    Хотя непосредственная работа с NaN редко встречается, оно может неожиданно появиться после неудачной операции с числами.

    Давайте подробно рассмотрим специальное значение NaN: как проверить, содержит ли переменная NaN, и сценарии, которые в которых генерируется значения «не число».

    1. Число NaN

    Тип числа в JavaScript — это набор всех числовых значений, включая «не число», положительную бесконечность и отрицательную бесконечность.

    «Not A Number» можно получить с помощью специального выражения NaN или как свойство глобального объекта или функции Number:

    typeof NaN;        // => ‘number’

    typeof window.NaN; // => ‘number’

    typeof Number.NaN; // => ‘number’

    «Не число» — это значение, которое не представляет действительное число, несмотря на то, что оно имеет тип числа. Через NaN полезно представлять ошибочные операции с числами. Например, умножение числа на undefined не является допустимой операцией, поэтому дает NaN:

    Также попытка разобрать недопустимую числовую строку, например, ‘Joker’ приводит к NaN:

    parseInt(‘Joker’, 10); // => NaN

    2. Проверка на равенство с NaN

    Интересным свойством NaN является то, что оно не равно ни одному значению, даже самому себе:

    Это поведение полезно для определения, является ли переменная NaN:

    const someNumber = NaN;

    if (someNumber !== someNumber) {  console.log(‘Is NaN’);

    } else {

      console.log(‘Is Not NaN’);

    }

    // logs «Is NaN»

    Выражение someNumber !== someNumber равно true, только если someNumber является NaN. Таким образом, приведенный выше фрагмент регистрирует в консоли «Is NaN». JavaScript содержит встроенные функции для определения NaN: isNaN() и Number.isNaN():

    isNaN(NaN); // => true

    isNaN(1);   // => false

    Number.isNaN(NaN); // => true

    Number.isNaN(1);   // => false

    Разница между этими функциями заключается в том, что Number.isNaN() не преобразуется свой аргумент в число:

    isNaN(‘Joker12’);        // => true

    Number.isNaN(‘Joker12’); // => false

    isNaN(‘Joker12’) преобразует аргумент ‘Joker12’ в число, которое является NaN. Таким образом, функция возвращает true.

    С другой стороны, Number.isNaN(‘Joker12’) проверяет аргумент без преобразования. Функция возвращает false, потому ‘Joker12’ не равно NaN.

    3. Операции, дающие NaN

    3.1 Парсинг чисел

    В JavaScript вы можете преобразовать числовые строки в числа. Например, вы можете легко преобразовать строку ‘1.5’ в число с плавающей запятой 1.5:

    const numberString = ‘1.5’;

    const number = parseFloat(numberString);

    number; // => 1.5

    Когда строка не может быть преобразована в число, функция синтаксического анализа возвращает NaN: указывая, что синтаксический анализ не выполнен. Вот некоторые примеры:

    JavaScript. Быстрый старт

    Изучите основы JavaScript на практическом примере по созданию веб-приложения

    Узнать подробнее

    parseFloat(‘Joker12.5’); // => NaN

    parseInt(‘Joker12’, 10); // => NaN

    Number(‘Joker12’);       // => NaN

    При парсинге чисел рекомендуется проверить, не является ли результат парсинга NaN:

    let inputToParse = ‘Invalid10’;

    let number;

    number = parseInt(inputToParse, 10);

    if (isNaN(number)) {  number = 0;

    }

    number; // => 0

    Парсинг inputToParse не удался, поэтому parseInt(inputToParse, 10) возвращается NaN. Условие if (isNaN(number)) оценивается, как true, и 0 назначается number.

    3.2 undefined в качестве операнда

    При использовании undefined в качестве операнда в арифметических операциях, таких как сложение, умножение и т д. мы получаем NaN. Например:

    function getFontSize(style) {

      return style.fontSize;

    }

    const fontSize = getFontSize({ size: 16 }) * 2;

    const doubledFontSize = fontSize * 2;

    doubledFontSize; // => NaN

    getFontSize() — это функция, которая обращается к свойству fontSize из объекта стиля. При вызове getFontSize({ size: 16 }) результатом будкт undefined (свойство fontSize не существует в объекте { size: 16 }). fontSize * 2 оценивается как undefined * 2, что дает NaN.

    «Not A Number» генерируется, когда в качестве значения в арифметических операциях используется отсутствующее свойство или функция, возвращающая undefined. Отсутствие undefined в арифметических операциях — это хороший способ предотвратить получение NaN.

    3.3 NaN как операнд

    Значение NaN также генерируется, когда операндом в арифметических операциях является NaN:

    1 + NaN; // => NaN

    2 * NaN; // => NaN

    NaN распространяется на арифметические операции:

    let invalidNumber = 1 * undefined;

    let result = 1;

    result += invalidNumber; // appendresult *= 2;             // duplicate

    result++;                // increment

    result; // => NaN

    Операции с переменной result прерываются после добавления к result значения invalidNumber (которое является NaN).

    3.4 Неопределенные формы

    Значение NaN создается, когда арифметические операции имеют неопределенные формы. Деление 0 / 0 и Inifinity / Infinity:

    0 / 0;               // => NaN

    Infinity / Infinity; // => NaN

    Умножение 0 и Infinity:

    Сложение бесконечных чисел с разными знаками:

    Infinity + Infinity; // => NaN

    3.5 Неверные аргументы математических функций

    Квадратный корень из отрицательного числа:

    Math.pow(2, 0.5); // => NaN

    (2) ** 0.5;       // => NaN

    Или логарифм отрицательного числа:

    4. Заключение

    Понятие «не число», выраженное в JavaScript с помощью NaN, полезно для представления ошибочных операций над числами. NaN не равно ни одному значению, даже самому себе. Рекомендуемый способ проверить, содержит ли переменная NaN — использовать Number.isNaN(value).

    Преобразование числовых строк в числа, в случае неудачи может дать NaN. Рекомендуется проверять, не возвращают ли parseInt(), parseFloat() или Number() NaN.

    Если undefined или NaN используются в качестве операнда в арифметических операциях, это обычно приводит к NaN. Правильная обработка undefined (предоставление значений по умолчанию для отсутствующих свойств) является рекомендованным подходом для предотвращения этой ситуации.

    Неопределенные формы или недопустимые аргументы для математических функций также приводят получению NaN. Но это случается редко. Вот мой практический совет: «Получили NaN? Ищите undefined!»

    Автор: Dmitri Pavlutin

    Источник: //dmitripavlutin.com

    Редакция: Команда webformyself.

    JavaScript. Быстрый старт

    Изучите основы JavaScript на практическом примере по созданию веб-приложения

    Узнать подробнее

    JavaScript. Быстрый старт

    Изучите основы JavaScript на практическом примере по созданию веб-приложения

    Смотреть

    import pandas as pd
    data = {'kol_click':[1, 8, 4, 2, 1, '', 18, '', 3, 10]}
    df1 = pd.DataFrame(data)
    df1['kol_click_1'] = df1['kol_click'].str.replace('', '0')
    print(df1.head(10))
    
      kol_click kol_click_1
    0         1         NaN
    1         8         NaN
    2         4         NaN
    3         2         NaN
    4         1         NaN
    5                     0
    6        18         NaN
    7                     0
    8         3         NaN
    9        10         NaN
    

    Почему числа поменялись на NaN ? Как заменить пустые строки на нулевые значения?

    MaxU - stop russian terror's user avatar

    задан 3 мар 2020 в 13:23

    Денис Астаховский's user avatar

    1

    Проблема вызвана смешением целых чисел и строк в одном столбце. Pandas воспринимает тип такого столбеца как object:

    In [17]: df1.dtypes
    Out[17]:
    kol_click    object
    dtype: object
    

    Но комфортно работать c таким столбцом как с обычным строковым столбцом не получится:

    In [25]: df1['kol_click'].str[:10]
    Out[25]:
    0    NaN
    1    NaN
    2    NaN
    3    NaN
    4    NaN
    5
    6    NaN
    7
    8    NaN
    9    NaN
    Name: kol_click, dtype: object
    
    In [26]: df1['kol_click'].astype(str).str[:10]
    Out[26]:
    0     1
    1     8
    2     4
    3     2
    4     1
    5
    6    18
    7
    8     3
    9    10
    Name: kol_click, dtype: object
    

    Решение — попробуйте так:

    In [22]: df1['kol_click_1'] = pd.to_numeric(df1['kol_click'], errors='coerce').fillna(0)
    
    In [23]: df1
    Out[23]:
      kol_click  kol_click_1
    0         1          1.0
    1         8          8.0
    2         4          4.0
    3         2          2.0
    4         1          1.0
    5                    0.0
    6        18         18.0
    7                    0.0
    8         3          3.0
    9        10         10.0
    
    In [24]: df1.dtypes
    Out[24]:
    kol_click       object
    kol_click_1    float64
    dtype: object
    

    0xdb's user avatar

    0xdb

    51.3k194 золотых знака56 серебряных знаков227 бронзовых знаков

    ответ дан 3 мар 2020 в 13:36

    MaxU - stop russian terror's user avatar

    1

    Что такое NaN?
    NaN, аббревиатура от «Not a Number», является исключением, которое обычно возникает в тех случаях, когда выражение приводит к числу, которое невозможно представить. Например, квадратный корень из отрицательных чисел.

    #include<iostream>

    #include<cmath> // for sqrt()

    using namespace std;

    int main()

    {

    float a = 2, b = -2;

    cout << sqrt (a) << endl;

    cout << sqrt (b) << endl;

    return 0;

    }

    Выход:

    1,41421
    -нан
    

    Как проверить NaN?

    Метод 1. Использование оператора сравнения («==»).
    В этом методе мы проверяем, является ли число сложным, сравнивая его с самим собой. Если результат верен, то число не комплексное, то есть действительное. Но если результат ложный, то возвращается «нан», т.е. число комплексное.

    #include<iostream>

    #include<cmath> // for sqrt()

    using namespace std;

    int main()

    {

    float a = sqrt (2);

    float b = sqrt (-2);

    a==a? cout << "Its a real number" << endl:

    cout << "Its NaN" << endl;

    b==b? cout << "Its a real number" << endl:

    cout << "Its NaN" << endl;

    return 0;

    }

    Выход:

    Its a real number
    Its NaN
    


    Метод 2: Использование встроенной функции isnan ().

    Другой способ проверить NaN — использовать функцию «isnan ()», эта функция возвращает истину, если число сложное, иначе она возвращает ложь.

    #include<iostream>

    #include<cmath> // for sqrt() and isnan()

    using namespace std;

    int main()

    {

    float a = sqrt (2);

    float b = sqrt (-2);

    isnan(a)? cout << "Its NaN" << endl:

    cout << "Its a real number" << endl;

    isnan(b)? cout << "Its NaN" << endl:

    cout << "Its a real number" << endl;

    return 0;

    }

    Выход:

    Это реальное число
    Его NaN
    

    Автором этой статьи является Манджит Сингх. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью метода влиятельности. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

    Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

    Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

    Глобальное свойство NaN — это значение, представляющее Not-A-Number.

    Атрибуты свойства NaN
    Writable no
    Enumerable no
    Configurable no

    Try it

    Description

    NaN — это свойство глобального объекта . Другими словами, это переменная в глобальной области видимости.

    Начальное значение NaN равно Not-A-Number — то же, что и значение Number.NaN . В современных браузерах NaN является ненастраиваемым и недоступным для записи свойством. Даже если это не так, избегайте переопределения. NaN в программе довольно редко .

    Существует пять различных типов операций, возвращающих NaN :

    • Число не может быть проанализировано (например, parseInt("blabla") или Number(undefined) )
    • Математическая операция, результат которой не является действительным числом (например, Math.sqrt(-1) )
    • Операнд аргумента — NaN (например, 7 ** NaN )
    • Неопределенная форма (например, 0 * Infinity или undefined + undefined )
    • Любая операция, которая включает строку и не является операцией сложения (например, "foo" / 3 )

    Examples

    Тестирование против NaN

    NaN сравнивает unequal (через == , != , === и !== ) с любым другим значением, в том числе с другим значением NaN . Используйте Number.isNaN() или isNaN() , чтобы наиболее четко определить, является ли значение NaN . Или выполните самосравнение: NaN и только NaN будут сравниваться неравно самому себе.

    NaN === NaN;        
    Number.NaN === NaN; 
    isNaN(NaN);         
    isNaN(Number.NaN);  
    Number.isNaN(NaN);  
    
    function valueIsNaN(v) { return v !== v; }
    valueIsNaN(1);          
    valueIsNaN(NaN);        
    valueIsNaN(Number.NaN); 
    

    Однако обратите внимание на разницу между isNaN() и Number.isNaN() : первый вернет true если значение в настоящее время равно NaN , или если оно будет NaN после приведения его к числу, а последнее вернет true только если значение в настоящее время NaN :

    isNaN('hello world');        
    Number.isNaN('hello world'); 
    

    По той же причине использование значения bigint вызовет ошибку с isNaN() , а не с Number.isNaN() :

    isNaN(1n);        
    Number.isNaN(1n); 
    

    Кроме того, некоторые методы массива не могут найти NaN , а другие -.

    const arr = [2, 4, NaN, 12];
    arr.indexOf(NaN);                      
    arr.includes(NaN);                     
    arr.findIndex((n) => Number.isNaN(n));   
    

    Specifications

    Browser compatibility

    Desktop Mobile Server
    Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet Deno Node.js
    NaN

    1

    12

    1

    4

    4

    1

    4.4

    18

    4

    10.1

    1

    1.0

    1.0

    0.10.0

    See also

    • Number.NaN
    • Number.isNaN()
    • isNaN()

    JavaScript

    • Math.tanh()

      Функция Math.tanh()возвращает гиперболический тангенс числа,то есть tanh x sinh cosh e 2 1 frac{sinh x}{cosh {e^x frac{e^{2x}1}{e^{2x}+1}Число.

    • Math.trunc()

      Функция Math.trunc()возвращает целую часть числа,удаляя все дробные цифры.

    • Number

      Number-это примитивный объект-обертка,используемый для представления и манипулирования числами,такими как 37 -9.25.

    • Number.EPSILON

      Свойство Number.EPSILON представляет разницу между 1 и наименьшим значением с плавающей точкой больше чем Вы не должны создавать объект Number для доступа к этому свойству.

    В JS проверка на NaN затруднена там, что это тип данных, который равняется «ничем». NaN — это «Not a Number» и переводится как «не число». Обычно такое значение возвращается, когда невозможно завершить работу математической функции или когда в значении математической функции расположено «не число». На практике, NaN появляется тогда, когда в JS-скрипте появляется ошибка.

    Может возникнуть простой вопрос: для чего в JavaScript NaN, если это не число, не строка и даже не «пустота»? NaN редко когда применяется специально. А его история возникновения тянется еще с первых лет создания JavaScript. Те, кто работает с JavaScript, знают, что это не строгий и многое прощающий язык программирования. NaN в него был введен для того, чтобы в случае возникающих ошибок в скрипте, программа не оканчивала собственное выполнение, а продолжала работать  вернув в качестве значения ошибки NaN.

    Проверка на NaN в JS

    Проверка на NaN в JS осложнена тем, что это значение не равняется ни какому другому значению, в том числе самому себе. То есть выражение «NaN===NaN» вернет «false». Поэтому проверка на NaN при помощи простого сравнения невозможна. Лучше уж применять функцию «isNaN()» или  метод «Number.isNaN()». Но и тот, и другой способ нужно применять осторожно, потому что каждый из них по-своему специфичен. Например:

    • функция «isNaN()» при проверке вернет «true» в двух случаях: если при проверке значение уже NaN и если оно станет NaN после попытки преобразования его в число;

    • метод «Number.isNaN()» вернет «true» только если значение при проверке уже является NaN.

    В общем, с такими способами проверки может сложиться такая ситуация:

    isNaN(‘Привет, Дормидонт!’); //в результате вернет «true»

    Number.isNaN(‘Привет, Дормидонт!’); // в результате вернет «false»

    Проверка на NaN в JavaScript: безотказный метод

    Проверка на NaN в JS возможна, но для этого нужно выстраивать специфичные конструкции из кода. Например, можно попробовать такую конструкцию:

    function sanitise(a) {

      if (isNaN(a)) {

         return NaN;

      }

      return a;

    }

    console.log(sanitise(‘тут введите какое-то значение’));

    Вы можете попробовать этот скрипт в действии и в функции «console.log()» ввести разные значения: строки, числа, NaN, underfilled и др. Таким образом вы сможете убедиться, что такая проверка на NaN в JS работает безотказно.

    Заключение

    Сегодня мы познакомились с таким типом данных в JavaScript, как NaN. Самое важное, что теперь вы знаете как проводится проверка на NaN в JS. Она нужна не часто, так как NaN это специфическое значение, которое получается самостоятельно, но может быть полезной.

    PavelNovichok

    22 / 22 / 7

    Регистрация: 04.07.2015

    Сообщений: 161

    1

    25.06.2016, 11:15. Показов 5294. Ответов 3

    Метки нет (Все метки)


    Здравствуйте!
    Скажите пожалуйста, почему в конце программы возле всей суммы появляется NaN, и это происходит, если в поле продуктов
    указано хотя бы одно значение, но так не всегда. Объясните, почему появляется NaN.

    HTML5
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    <DOCTYPE html>
        <html>
        <head>
            <meta charset="utf-8">
            <title>Покупки</title>
            <script src="shop.js"></script>
            <link rel="stylesheet" href="shop.css">
        </head> 
        <body>
            <label for="first">Введите название продукта </label><input id="first" type="text"     placeholder="">
            <label for="second">Введите цену продукта </label><input id="second" type="number" placeholder="">
            <button onclick="calc()">Добавить</button>
            <button onclick="result()">Подсчитать</button>
            <br><br><br><br>
            <div id="list"></div>
            
        </body>
        </html>
    Javascript
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    var first, second, arrfirst, arrsecond; //создание переменных
    arrfirst = new Array();// два новых
    arrsecond = new Array();// массива
    function calc() {
        first = document.getElementById('first').value; // взятие первого значения
        second = document.getElementById('second').value; // взятие второго значения
        arrfirst.splice(0,0, first); // добавление текстовых значений в массив
        arrsecond.splice(0,0, second); // добавление числовых значений
        
        document.getElementById('first').value = '';
        document.getElementById('second').value = '';
    }
     
     
    function result(){
        var res = 0; //переменная для полной цены  
        for(var i = 0; i != arrsecond.length; i++){ // цикл для сложения цифр из массива arrsecond
           if((i % 2) == 0) { // условие чтобы 2 одинаковых элемента массива arrsecond не   
           //складывались
           res += parseInt(arrsecond[i]) + parseInt(arrsecond[i + 1]); //сложение элементов массива
            }
        }
        document.write('Все продукты: ' + arrfirst + '<br>' + 'Вся сумма: ' + res + ' единиц. <br>' + arrsecond);// Вывод всех результатов
        //document.write(res);
    }

    Вот скриншот:
    Вложение 711185
    Вложение 711186
    С уважением, Павел.

    __________________
    Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

    0

    Programming

    Эксперт

    94731 / 64177 / 26122

    Регистрация: 12.04.2006

    Сообщений: 116,782

    25.06.2016, 11:15

    Ответы с готовыми решениями:

    Почему выражение возвращает NaN?
    Math.ceil((4/3)*Math.PI*Math.pow(rEnd, 3))

    Все скобки стоят правильно, не пойму из-за чего…

    значение NaN
    Здраствуйте, скажите почему не выполняется условие result==NaN, ведь в переменной result находится…

    Выдает NaN
    Здравствуйте. Я новичок в написании сайтов, обучаюсь сам, и возникла ошибка, которую не получается…

    Проверка на NaN
    Привет.
    У меня есть два textbox и textarea.
    В оба textbox вводятся числа, после чего жмется…

    3

    dzendev

    181 / 103 / 48

    Регистрация: 12.03.2016

    Сообщений: 260

    25.06.2016, 19:07

    2

    Я бы начал с этой строчки кода:

    Javascript
    1
    
    res += parseInt(arrsecond[i]) + parseInt(arrsecond[i + 1]);

    Если пользователь добавит только один товар, а затем нажмёт «Подсчитать», эта строка кода выдаст NaN.
    1. arrsecond[i + 1] — undefined (значение не определено, второго товара нет)
    2. parseInt(arrsecond[i + 1]) — при попытки преобразовать undefined в число будет NaN (не число)
    3. parseInt(arrsecond[i]) + parseInt(arrsecond[i + 1]) — число + NaN будет NaN

    0

    22 / 22 / 7

    Регистрация: 04.07.2015

    Сообщений: 161

    25.06.2016, 21:31

     [ТС]

    3

    Но один товар добавлять нет смысла, а если добавляю несколько товаров, то иногда складывается нормально, а иногда — выдает NaN. Не могу уже 2 или 3 дня разобраться.

    0

    dzendev

    181 / 103 / 48

    Регистрация: 12.03.2016

    Сообщений: 260

    25.06.2016, 22:38

    4

    Лучший ответ Сообщение было отмечено PavelNovichok как решение

    Решение

    Цитата
    Сообщение от PavelNovichok
    Посмотреть сообщение

    Но один товар добавлять нет смысла

    Что значит нет смысла? Ваш код позволяет это сделать. Значит надо переписать реализацию так чтобы нельзя было организовать подсчёт пока не будет добавлено как минимум 2 товара.
    Это был первый момент.
    Второй момент, Ваш код позволяет, не указав цену товара, добавить его. А это приводит к тому что, при попытки использовать ParseInt возвращаемое значение будет NaN.
    И третье. Значение NaN появляется тогда, когда кол-во добавленных товаров будет нечётным (3, 5, …)

    Добавлено через 51 минуту
    Вот такой Вам код в качестве решения могу предложить.

    PHP/HTML
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    
    <!DOCTYPE html>
        <html>
        <head>
            <meta charset="utf-8">
            <title>Покупки</title>
        </head> 
        <body>
            <label for="name">Введите название продукта </label><input id="name" type="text"     placeholder="">
            <label for="price">Введите цену продукта </label><input id="price" type="number" placeholder="">
            <button id="add">Добавить</button>
            <button id="total" disabled>Подсчитать</button>
            <br><br><br><br>
            <div id="error"></div>
            <div id="list-name"></div>
            <div id="list-price"></div>
            <script>
                (function () {
                    var name = document.getElementById('name'), 
                        price = document.getElementById('price'),
                        error = document.getElementById('error'),
                        add = document.getElementById('add'),
                        total = document.getElementById('total'),
                        listName = document.getElementById('list-name'),
                        listPrice = document.getElementById('list-price'),
                        names = [], prices = [];
                    
                    add.addEventListener('click', function () {
                        var n = name.value,
                            p = parseInt(price.value, 10);
                        
                        name.style.border = '1px solid black';
                        price.style.border = '1px solid black';
     
                        if(n === ''){
                            error.innerHTML = 'Введите название продукта';
                            name.style.borderColor = 'red';
                            return false;
                        }
     
                        if( isNaN(p) ){
                            error.innerHTML = 'Введите цену';
                            price.style.borderColor = 'red';
                            return false;
                        }
     
                        if(prices.length > 0){
                            total.disabled = false;
                        }
     
                        names.push(n);
                        prices.push(p);
     
                        name.value = '';
                        price.value = '';
                        error.innerHTML = '';
     
                    });
     
                    total.addEventListener('click', function () {
                        listName.innerHTML = '';
                        var n = '<ul>';
                        names.forEach(function (index) {
                            n += '<li>' + index + '</li>';
                        }, 0);
                        n += '</ul>';
                        listName.innerHTML = n;
     
                        listPrice.innerHTML = '';
                        var p = prices.reduce(function (sum, current) {
                            return sum + current;
                        }, 0);
                        listPrice.innerHTML = p;
                    });
                })();
            </script>
        </body>
        </html>

    Демонстрация http://codepen.io/anon/pen/EyZLYN

    1

    IT_Exp

    Эксперт

    87844 / 49110 / 22898

    Регистрация: 17.06.2006

    Сообщений: 92,604

    25.06.2016, 22:38

    Помогаю со студенческими работами здесь

    Результат NaN
    Результат a + b = NaN,
    Не могу найти ошибку.
    Помогите новичку.

    &lt;!DOCTYPE html&gt;
    &lt;html&gt;…

    Заклятая NaN
    Здравствуйте, вот есть проблема, при выводе alert ответ NaN

    var a;
    var b;
    var str=&quot;&quot;;
    var…

    Выводит NaN!
    Есть 2 текстовых поля, туда нужна ввести любую букву английского или же русского алфавита и нажать…

    parseInt($(this).text() = NaN
    Вечер добрый.
    Требуется записать в тег значение равное (нынешнее значение — переменная).

    var q…

    Искать еще темы с ответами

    Или воспользуйтесь поиском по форуму:

    4

    I am using the below codes:

    <script type="text/javascript">
    function minus(){
    var t=document.getElementById("totalcost").value;
    var u=document.getElementById("advpay").value;  
    var set=(t-u);
    document.getElementById("textfield").value=set;
    return true;
    }
    </script>
    

    I entered «6000» as value in totalcost id field and «1000» in advpay id field. so in textfield id field, it should show 5000 (6000-1000), but it is giving answer as NaN. where is the error ?

    asked Jun 18, 2013 at 19:43

    user2498559's user avatar

    0

    <script type="text/javascript">
    function minus() {
        var t = parseInt(document.getElementById("totalcost").value, 10),
            u = parseInt(document.getElementById("advpay").value, 10),
            set = (t - u);
        document.getElementById("textfield").value = set;
        return true;
    }
    </script>
    

    This is happening because you are trying to subtract two strings! value returns the string of the input, you need to parse it to a number in order to subtract them. Remember to specify radix of parseInt, otherwise the number could be parsed not as a decimal. See this answer for more detailed informations.

    Community's user avatar

    answered Jun 18, 2013 at 19:44

    Niccolò Campolungo's user avatar

    5

    NaN is abbreviated of Not a Number. NaN will be the result of any calculation which contains anything rather than a number (strings, boolean, object). In your case the calculations were made by using 2 strings, That’s why it has returned NaN. You have to cast your values into number before doing the calculation.

    You can cast your values by using the following piece of code:

    Example 1:

     var t = +document.getElementById("totalcost").value;
     u = +document.getElementById("advpay").value;
    

    Example 2 (As @LightStyle suggested):

     var t = parseInt(document.getElementById("totalcost").value, 10),
     u = parseInt(document.getElementById("advpay").value, 10),
    

    cssmtnr's user avatar

    cssmtnr

    92713 silver badges26 bronze badges

    answered Jun 18, 2013 at 20:01

    Rajaprabhu Aravindasamy's user avatar

    NaN возникает, когда случается попытка произвести арифметическую операцию с не числовыми данными. Когда один из аргументов например строка и никак не может быть преобразован в число.

    Например вы считаете разницу: var r = a — b; Если a = 3, b = 2, то r будет 1, но если один из этих аргументов получит что-то странное, например вместо числа юзер введет скажем «вася», то в итоге получим 3 — «вася» = NaN

    Решением вашей проблемы, будет проверка всех полей для ввода, так чтобы не допустить строк там, где ожидается число.

    Понравилась статья? Поделить с друзьями:
  • Ошибка на стриме 2000
  • Ошибка на стиральной машинке самсунг sud что означает
  • Ошибка на телевизоре самсунг 137
  • Ошибка на странице яндекс браузера как исправить
  • Ошибка на стиральной машинке самсунг le как устранить