Может удваиваться использоваться для представления числа на 64 бита без потери точности

Используя XmlValidatingReader предотвратит исключения, если Вы обеспечите свой собственный ValidationEventHandler.

6
задан Kop 24 November 2009 в 11:16
поделиться

8 ответов

Из памяти, double может точно представлять 53-битовое целое число со знаком.

3
ответ дан 8 December 2019 в 03:39
поделиться

Нет, вы не можете использовать Double для хранения 64-битных целых чисел без потери точности.

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

2
ответ дан 8 December 2019 в 03:39
поделиться

Несмотря на то, что вы получили несколько хороших ответов на свой вопрос о 64-битных типах, вам все же может потребоваться практическое решение вашей конкретной проблемы. Самым надежным решением, которое я знаю, является сборка Lua 5.1 с патчем LNUM (также известным как целочисленный патч Lua), который можно загрузить с LuaForge. Если вы не планируете собирать Lua из исходного кода C, существует по крайней мере одна чистая библиотека Lua, которая обрабатывает 64-битные целые числа со знаком - см. Вики для пользователей Lua.

5
ответ дан 8 December 2019 в 03:39
поделиться

Двойник сам по себе является 64-битным типом. Однако вы теряете 1 бит для знака и 11 для экспоненты.

Итак, ответ - нет: это невозможно.

4
ответ дан 8 December 2019 в 03:39
поделиться

Я ничего не знаю о lua
но если бы вы могли понять, как выполнять побитовые манипуляции с плавающей точкой на этом языке, вы могли бы теоретически создать класс-оболочку, который принял бы ваш номер в виде строки и установил биты с плавающей запятой в том порядке, который представляет собой число вы дали это
более практичным решением было бы использование некоторой библиотеки bignum

-1
ответ дан 8 December 2019 в 03:39
поделиться

В 64-битной системе можно хранить только 2 ^ 64 различных кода. Это означает, что 64-битный тип, который может представлять 2 ^ 64 целых числа, не имеет места для представления чего-либо другого, например чисел с плавающей запятой.

Очевидно, что double может представлять множество нецелых чисел, поэтому он может не соответствует вашим требованиям.

1
ответ дан 8 December 2019 в 03:39
поделиться

Нет

По крайней мере, некоторые биты 64-битного числа с двойным числом должны использоваться для представления экспоненты (положение двоичной точки), и, следовательно, для фактическое число. Так что нет, 64-битное число с двойной точностью не может представлять все значения, которые может представлять 64-битное целое число (и наоборот).

14
ответ дан 8 December 2019 в 03:39
поделиться

IEEE 754 double не может точно представлять 64-битные целые числа. Однако он может представлять в точности каждое 32-битное целочисленное значение.

0
ответ дан 8 December 2019 в 03:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: