Python умножение, экспонента дает различную точность - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть некоторый код Python, который я хотел бы понять, что происходит (см. Ниже). У меня также есть результаты расчетов. Если я возводю в квадрат радиус повторным умножением, я получаю другой результат, чем если бы я возводил в квадрат радиус Если бы это было округление, я бы ожидал меньший разрыв между двумя расчетами. Может кто-нибудь поставить меня на правильный путь, пожалуйста?

import math
diameter=float(input('Enter the diameter: '))
radius = diameter / 2.0

area_1 = math.pi * radius * radius
print ("The area is: ", area_1)

area_2 = math.pi * radius**2
print ("The area is: ", area_2)
=========================================================
Enter the diameter: 6.2

The area is:  30.19070540099791**3**

The area is:  30.19070540099791**7**

1 Ответ

3 голосов
/ 03 февраля 2020

Разница исходит из того, как были рассчитаны оба выражения:

  1. math.pi * radius * radius было вычислено как:

    a. tmp = math.pi * radius

    б. tmp * radius

  2. math.pi * radius**2

    a. tmp2 = radius**2

    б. tmp2 * math.pi

Математически оба эквивалентны, но это не так, когда мы говорим о конечной точности типов с плавающей запятой в компьютере.

Вы можете прочитать больше на topi c в Википедии или других источниках. Область численного анализа численных методов ) в основном связана с этими ошибками численного округления в поиске лучших алгоритмов для вовлеченных вычислений.


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