Большинство целых чисел не являются числами с плавающей точкой=news.ycombinator.com=

Большинство целых чисел не являются числами с плавающей точкой ( johndcook.com )

dmurray 54 минуты назад | [–]
Это должно быть очевидно. Существует столько же 32-битных целых чисел, сколько и 32-битных чисел с плавающей точкой [0], поэтому для каждого числа с плавающей точкой, которое не является целым числом, существует целое число, которое не является числом с плавающей точкой. Очевидно, что большинство чисел с плавающей точкой не могут быть представлены как целые числа, поэтому обратное также должно быть верным.

Но я все еще вижу людей, создающих системы, в которых неявное преобразование float в int не допускается, поскольку «это приведет к потере точности», но которые позволяют преобразованию int в float.

[0] не отвечайте мне по поводу NaN, пожалуйста

отвечать

Кранар 16 минут назад | | [–]
Конечно, но по крайней мере по моему опыту редко приходится преобразовывать 32-битные int в 32-битные float. Обычно преобразование происходит из 32-битного int в 64-битные float, что всегда безопасно.

отвечать

работа 24 минуты назад | | | [–]
> Это должно быть очевидно

Да

Они бывают разных типов

Это разные вещи.

Это связанные понятия, вот и все.

отвечать

taeric 2 часа назад | | [–]
Жаль, что мы склонны учить числа с плавающей точкой как компьютерную версию действительных чисел. Думать о них как о “научных числах” действительно очень помогает в этом.

отвечать

atn34 15 минут назад | | [–]
Я хочу сделать футболку в стиле «Птицы не настоящие»[0] с надписью «Поплавки не настоящие».

[0]: https://en.wikipedia.org/wiki/Birds_Aren%27t_Real

отвечать

munchler 14 минут назад | | | [–]
Это верно, но нам также следует быть осторожными, обучая int как компьютерной версии целых чисел.

отвечать

PaulHoule 2 часа назад | [–]
… но люди привыкли использовать doubles. Многие языки, такие как Javascript, поддерживают только doubles, а int32(s) встраиваются в doubles.

У меня есть некоторые заметки о фантастическом компьютере, который, возможно, появился бы, если бы китайцы [1] разработали что-то вроде PDP-10 [2]. Изначально я хотел 24-битный размер слова [3], но решил остановиться на 48-битном [4], потому что 48 бит можно уместить в double для реализации Javascript.

[1] Существуют инструкции по сканированию символов UTF-8, а система отображения поддерживает растровые символы двойной ширины, которые разделены на половины, индексированные 24-битными целыми числами.

[2] Это архитектура загрузки-хранения, но есть инструкции для извлечения и записи 0 [3] Я не могу смириться с тем, что возможное 24-битное поколение не материализовалось в 1980-х годах, и нахожу, что eZ80 вызывает своего рода ностальгию по альтернативной истории.

[4] В предыстории, он начинался с 24-битного адресного пространства, как 360, но был расширен, чтобы иметь “широкие указатели”, квалифицированные идентификатором адресного пространства (вместо ориентированной на страницы архитектуры, которую индустрия действительно приняла), а также “глубокие указатели”, которые определяют битовую карту, 48 бит достаточно, чтобы указатель был глубоким и широким и имел несколько битов тега. Адресные пространства могут объединяться вместе смежно или нет, в зависимости от того, что вы помещаете в таблицу адресных пространств.

отвечать


Рассмотрите возможность подачи заявки на набор в YC на осень 2025 года! Заявки принимаются до 4 августа

Source: news.ycombinator.com

Leave a Reply

Your email address will not be published. Required fields are marked *