2016-07-11 3 views
0

Я знаю, что в Python и вообще есть много вопросов и статей о точности с плавающей запятой. Но я не нашел ответа на этот вопрос.Python: различная точность в и из функции

Я вычисляю одно и то же заявление один раз, вызывая функцию и второй раз без нее. Значение, вычисленное функцией, отклоняется на 0,003, что мало. Как я могу получить такую ​​же точность от функции?

from scipy.stats import norm 
from math import * 

sigma = 0.174 


def g(ltv): 
    ans = 1 - norm.cdf(0.5 * pow(sigma, 2) - log(ltv)/sigma) 
    print(ans) 

g(0.7) 

ans1 = 1 - (norm.cdf((0.5 * pow(sigma, 2) - log(0.7))/sigma)) 
print(ans1) 

Выход:

0,0194617840206

0,016304852863

+4

Ваши два расчета не идентичны. Закрытие для простой опечатки. –

+0

«Я вычисляю одно и то же утверждение» - только это не то же утверждение. Почему бы не скопировать одну и ту же строку в обе области, а не перепечатывать ее с другой группой? – TigerhawkT3

ответ

5

Я вычисляя же заявление

Нет, это не так. Это

0.5 * pow(sigma, 2) - log(ltv)/sigma 

является не эквивалент этой

(0.5 * pow(sigma, 2) - log(0.7))/sigma 

The precedence операторов, чувак.

+0

[Приоритет оператора] (https://docs.python.org/2/reference/expressions.html#operator-precedence) – MattH

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