2016-03-01 4 views
0

В Python, когда x = 27., Exp (-x x) составляет ~ 10^-317. Когда x равно> 27., Exp [-x x] становится равным нулю в Python. Но у меня будет домен x от 0, до 50 или даже больше. Итак, как я могу остановить Python от округления экспоненты до нуля после x> 27? Возможно ли это сделать?Python: разрешить точность для очень небольшого числа?

Спасибо, --Raj

ответ

0

Для расчета очень большого числа с питона вы можете попробовать использовать пакет gmpy2 так:

import numpy as np 
from gmpy2 import mpz 
n = 50 
print pow(mpz(np.e),n*n) 
0

Родной Python поплавка тип использует стандартный C double в качестве базового значения. Вы достигли предела 64-битного типа с плавающей точкой IEEE.

Вам нужно будет использовать другой тип данных. Я поддерживаю библиотеку gmpy2, которая поддерживает целые числа произвольной точности (mpz), рациональные (mpq), реальные (mpfr) и сложные (mpc) типы. Библиотека написана на C и использует библиотеки GMP, MPFR и MPC.

>>> import gmpy2 
>>> gmpy2.exp(-50*50) 
mpfr('1.8356726691621567e-1086') 
>>> 

mpmath библиотека - еще один хороший выбор.

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