2017-02-01 6 views
1

Какова точность чисел с плавающей запятой в Python? Всегда ли это двойная точность или это реализация или конкретная платформа? Различается ли, например, CPython и PyPy?Точность чисел с плавающей запятой

+0

Хороший вопрос. (Пожалуйста, не уменьшайте!). Чтобы добавить цвет, на C и C++ это конкретная реализация. В Java это должен быть IEEE754. Что касается питона, я понятия не имею. Быстрый Google не проливает свет на это (для меня). – Bathsheba

+0

Проверьте это для CPython2: https://docs.python.org/2/tutorial/floatingpoint.html – MYGz

+0

Здесь есть ключ http://floating-point-gui.de/languages/python/. Верхняя строка «Почти все платформы отображают плагин Python для двойной точности IEEE 754». Таким образом, похоже, что это то же самое, что C и C++. – Bathsheba

ответ

3

От Python документация:

Числа с плавающей точкой, как правило, реализуется с использованием двойной в C; информация о точности и внутреннее представление чисел с плавающей точкой для машины, на которой ваша программа работает доступна в sys.float_info.

sys.float_info - это последовательность структур, содержащая информацию о поплавком типе. Он содержит информацию о низком уровне точности и внутреннего представления.

import sys 

print(sys.float_info.mant_dig) 

mant_dig атрибут указывает на флоат точности: количество базовых поразрядной цифр мантиссы поплавка

Почти все платформы на карте Python всплывает IEEE 754 двойной точностью.

+0

Спасибо! Да, я знаю «sys.float_info», проблема в том, что «обычно». Я мог бы изменить вопрос, когда это не C двойной? –

+0

@EcirHana: Для CPython это всегда * C двойной. Это жестко закодировано в [источнике CPython] (https://github.com/python/cpython/blob/3.6/Include/floatobject.h#L17). –

+0

Yup, это достаточно хорошо для меня. (Хотя было бы неплохо иметь ссылку на официальную документацию python). Имейте upvote. – Bathsheba

1
import sys 
sys.float_info 

sys.float_info (макс = 1.7976931348623157e + 308, max_exp = 1024, max_10_exp = 308, мин = 2.2250738585072014e-308, min_exp = -1021, min_10_exp = -307, рыть = 15, mant_dig = 53 , эпсилон = 2.220446049250313e-16, Radix = 2, патронов = 1)

Найдено здесь: https://docs.python.org/3/library/stdtypes.html#typesnumeric Sec 4.4

ли это поможет?

Смежные вопросы