Почему тип NaN является поплавком? - PullRequest
0 голосов
/ 01 марта 2012

На всех известных мне языках (python, java, php, javascript и т. Д.) Тип NaN является float (double). Есть ли какая-либо причина для этого? Я не нашел такого в IEEE 754 [ Примечание : IEEE 754-2008, глава 6 посвящена NaN]. Даже если NaN хранится внутренне в виде числа с плавающей запятой, не должен ли он быть разделенным типом (подобным нулю / nil / none)? Существуют ли языки, которые используют отдельный тип для NaN?

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

Рассмотрим деление с плавающей запятой, которое я буду называть /.Совершенно очевидно, что мы хотим, чтобы он имел подпись

function / : float x float -> float

Но мы также хотим (согласно стандарту)

0 / 0 = NaN

Так что NaN должно быть значением типа float.

1 голос
/ 01 марта 2012

NaN имеет специфическое значение в отношении чисел с плавающей запятой. Если язык хочет реализовать «бессмысленные» результаты со своим собственным значением (например, None, NA, #N/A и т. Д.), Тогда это приветствуется, но операции FP требуют своего собственного конкретного индикатора, независимого от любого Используемый язык.

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