В Python3 (я использую 3.6) они решили начать выводить интегральные значения .
Это создало следующую проблему для меня. Предположим, что мы вводим большое число с плавающей точкой
math.floor(4.444444444444445e+85)
Выход в этом случае
44444444444444447395279681404626730521364975775215375673863470153230912354225773084672
В Python2.7 вывод был 4.444444444444445e+85
.
Вопрос 1: Можно ли воспроизвести выход в 3,6? Другими словами, что это? Вычисления несколько раз на разных компьютерах дали мне один и тот же результат. Я предполагаю, что это значение зависит только от ввода 4.444444444444445e+85
. Я предполагаю, что это пол двоичного представления этого числа. Факторизация объема производства составляет
2^232 × 3 × 17 × 31 × 131 × 1217 × 1933 × 13217
, где этот фактор 2 ^ 232 близок к 10 ^ 70, которые есть в научной нотации, но я не совсем уверен.
Вопрос 2: Я думаю, что я знаю, как взять число с плавающей запятой 4.444444444444445e+85
, извлечь его значение и экспоненту и получить себе фактическое целое значение 4444444444444445 * 10 ** 70 или число с плавающей запятой 4.444444444444445e +85, что на мой взгляд кажется более честным значением для пола float(4.444444444444445e+85)
. Есть ли хороший способ восстановить это (позвольте мне это назвать) честное слово?
Хорошо, я отказываюсь называть «честным» слово десятичного представления. Поскольку компьютер хранит числа в двоичном формате, справедливо назвать честным вывод, вычисленный для двоичного представления. Это если мои предположения по Вопросу 1 верны.