Представление целых чисел в двухместных

Может ли двойной (заданного количества байтов с разумным балансом мантиссы / экспоненты) всегда полностью точно удерживать диапазон беззнакового целого числа в два раза меньше числа байтов?

Например, может ли восьмибайтовый двойной полностью точно удерживать диапазон чисел из четырех байтов без знака int?

То, к чему это приведет, – это если двухбайтовый float может содержать диапазон одного байта unsigned int.

Однобайтный беззнаковый int, конечно, будет 0 -> 255.

64-битный двоичный код IEEE754 может представлять любое 32-битное целое число, просто потому, что он имеет 53-разрядные биты, доступные для точности, и требуется только 32-битное целое число, ну, 32 🙂

Было бы правдоподобно, если бы 64-битное число с плавающей запятой (без IEEE754 с двойной точностью) имело менее 32 бит точности. Это позволило бы действительно огромные числа (из-за экспоненты), но ценой точности.

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

Да. Поплавок (или двойной) гарантированно точно представляет любое целое число, которое не нужно усекать. Для двойника существует 53 бит точности, поэтому этого более чем достаточно, чтобы точно представлять любое 32-битное целое число и крошечную (статистически выраженную) долю 64-битных.

Точно, что диапазон, который вы можете представлять, точно зависит от множества факторов в вашей реализации, но вы можете ограничить его, указав, что если для поля экспоненты установлено значение 0, вы можете точно представлять целые числа до ширины ваше поле мантиссы (при знаке бит). Для двойной точности IEEE 754 это означает, что вы можете точно представлять 52-разрядные номера. В общем, ваша мантисса будет на половину ширины общей структуры.

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

Я не буду использовать слова «полностью точно», когда речь идет о числах с плавающей запятой. Но да, double может представлять 32-битное целое число.

Я не знаю, какие другие комбинации float и ints это тоже верно.

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

  • Java BigDecimal тригонометрические методы
  • Interesting Posts

    Laravel 5 – Ручная разбивка на страницы

    Планировщик для последовательных заданий в Linux

    Схемы Санки в R?

    Могут ли новые литералы Clang Objective-C перенаправляться на пользовательские classы?

    Java Generics – метод Bridge?

    «node» не распознается как внутренняя или внешняя команда, операционная программа или командный файл при использовании phonegap / cordova

    Почему бегун xUnit не находит мои тесты

    Почему внезапно я не могу получить доступ к удаленному SVN?

    Нужно ли @FXML для каждого объявления?

    Являются ли бортовые контроллеры рейдов на базе южного моста Intel ICH10R по-прежнему считаются программным обеспечением Raid?

    ASP.NET MVC. Потенциально опасное значение Request.Form было обнаружено у клиента при использовании настраиваемого модуля-шаблона

    Как объединить два массива в C #?

    Каков допустимый диапазон для возвращаемого значения программы в Linux / bash?

    Как обновить страницу в ASP.NET? (Позвольте ему перезагрузить себя кодом)

    Слайд JPanel Содержимое в JForm на Java

    Давайте будем гением компьютера.