1

Тема: typeof(NaN) == "number"

JavaScript написав:
typeof(NaN) == 'number'
Поясненя
typeof(0.0) == 'number'
(0.0 / 0.0) // == NaN

Тут результат діленя (числа на число) є число (за типом), навіть якщо значеня є не число (за значеням).

Взагалі, сама ідея назвати "number" тип, деякі з значень якого є "Not a Number", це просто тупо. Як би залишили "float", питань би не було.

2

Re: typeof(NaN) == "number"

Ну та.

3

Re: typeof(NaN) == "number"

Але ж float - це скорочення від (single/double) precision floating point number.

Подякували: leofun011

4 Востаннє редагувалося leofun01 (09.03.2024 19:46:53)

Re: typeof(NaN) == "number"

koala написав:

Але ж float - це скорочення від (single/double) precision floating point number.

Я після такої інфо (видиво, en)

Тоді NaN треба було назвати якось інше. NWDV (Not Well Defined Value) на приклад.

5

Re: typeof(NaN) == "number"

Якщо я правильно розумію, то IEEE 754 був основною темою для подібних жартів до появи JS.

Подякували: leofun011

6

Re: typeof(NaN) == "number"

Мені пояснили, шо NaN треба читати як "не одне число". Тобто це число, бо там має бути якесь число, але воно не відоме або не одно значне.. якось так.
За змістом це подібно до того, шо я хотів бачити замість NaN.

7

Re: typeof(NaN) == "number"

Значення числа "не одне число" трохи безглузде.
З іншого боку, я переглянув доступні матеріали і тепер не зовсім певен у попередньому своєму твердженні, бо floating point format, а не number. Але у будь-якому разі, документація ECMASCript каже, що

Тип Number має рівно 18 437 736 874 454 810 627 (тобто 264 - 253 + 3) значень, що представляють значення подвійної точності 64-розрядного формату IEEE 754-2019, як зазначено в стандарті IEEE для двійкової арифметики з рухомою комою, за винятком 9 007 199 254 740 990 (тобто 253 - 2) окремих значеннь «Not-a-Number» стандарту IEEE, які представлені в ECMAScript як одне спеціальне значення NaN.

англ

The Number type has exactly 18,437,736,874,454,810,627 (that is, 264 - 253 + 3) values, representing the double-precision 64-bit format IEEE 754-2019 values as specified in the IEEE Standard for Binary Floating-Point Arithmetic, except that the 9,007,199,254,740,990 (that is, 253 - 2) distinct “Not-a-Number” values of the IEEE Standard are represented in ECMAScript as a single special NaN value.

Тобто тип Number - це не число, а значення у форматі IEEE-754.
Усе одно якось по-джаваскриптовому виходить.

Подякували: leofun011