|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2014
Сообщений: 17
|
Сомневаюсь. В справочнике адоб пишут:
MAX_VALUE Константа public static const MAX_VALUE:Number Язык версии: ActionScript 3.0 Версии среды выполнения: AIR 1.0, Flash Player 9, Flash Lite 4 Наибольшее представимое число (число IEEE-754 с удвоенной точностью). Это число равно примерно 1,79e+308. А у меня знаков вроде как меньше 308. Или я что-то не так понял в приведенном тексте. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
твое число можно записать как
940544481142550815427045414574e-1 где 9405444.. - мантисса -1 - порядок Так вот, согласно IEEE-754 под мантиссу отводится 52 бита под порядок - 11 бит Т.е. макс. число которое может быть в мантиссе без потери точности: 2^52= 4503599627370496 а у тебя там 940544481142550815427045414574 Добавлено через 2 минуты для справки |
|
|||||
Там максимум 16 цифр. Нули не в счёт. Остальные обрезаются.
Если у вас 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 Всё, что вместо троеточия обрежется.
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
да ,т.к. 2^52 соответствует 16-ти десятичным порядкам
|
|
|||||
Регистрация: Apr 2014
Сообщений: 17
|
Ага, теперь всё стало ясно. Тогда действительно кроме как разбивки на два числа, по другому не получится преобразовывать. Спасибо большое за прояснение причины обрезания!
|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
еще как вариант разбить весь диапазон на интервалы длиной в maxInt и генерить хэши кусками, а числа сразу в виде стрингов создавать.
|
|
|||||
Регистрация: Apr 2014
Сообщений: 17
|
Ну, я почти что-то понял )
|
|
|||||
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
Может для as3 есть что-нибудь типа BigDecimal?
|
|
|||||
Получилось нагуглить
https://github.com/maurice/BigDecimal.as https://code.google.com/archive/p/bigdecimal/ Работоспособность не проверял
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 13.11.2017 в 10:29. |
|
|||||
У вас есть 52 бита в Number для хранения мантисы. Остальное уходит на знак, порядок и прочее.
В мантисе будет лежать в данном случае 1111000011000111100001011110101011110000110001111000, а остальное будет отрезано. При представлении в десятичном виде вышеприведённая двоичная запись должна была бы стать 0.9405444811425507367630416410975158214569091796875, но она "округлиться" 16-и знаков после запятой и в следствии этого вы получаете 0.9405444811425508
__________________
ЛОДКИ Последний раз редактировалось FlashRus; 14.11.2017 в 01:45. |
Часовой пояс GMT +4, время: 19:23. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|