Максимальная научная запись? - PullRequest
0 голосов
/ 08 января 2019

Если я правильно помню, числа с плавающей запятой выделяют определенное количество битов для мощности, а определенное количество бит для значащих цифр. Тем не менее, мне немного трудно разобраться в том, что кажется максимальным числом научной нотации с плавающей запятой в python3 в моей 64-битной системе Linux:

>>> 1.8e308
inf
>>> 1.7e308
1.7e+308

Что здесь происходит?

Чтобы было ясно, меня не интересует, каково максимальное значение с плавающей запятой. Меня интересует обоснование того, почему это ценность. Например, кажется, что переполнение произойдет на некоторой четной степени двух для значащей цифры. Почему это происходит где-то между 1,7 и 1,8? Это кажется странным.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

«1.7» и «1.8» не являются цифрами от дробной части представления с плавающей запятой. Это десятичные цифры, полученные в результате выражения числа в десятичном, а не двоичном формате с плавающей запятой.

Переполнение происходит при мощности два, 2 1024 , что составляет около 1,779693 • 10 308 .

0 голосов
/ 08 января 2019

Чтобы получить точное максимальное значение, попробуйте сделать:

import sys
sys.float_info.max

Вы получите: 1.7976931348623157e + 308

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...