Python для l oop вычитание плавающего числа - PullRequest
0 голосов
/ 12 июля 2020

Ответ должен быть 49,8, 49,6, 49,4 .... вот так. Какую ошибку я сделал?

import math
x = 50.0
for i in range(50):
    x = x - 0.20
    print(x)

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Я бы предложил использовать функцию round() следующим образом:

x = 50.0

for i in range(50):
    x = round(x - 0.2, 2)
    print(x)

Вы не ошиблись, это происходит из-за характера того, как числа с плавающей запятой хранятся в памяти компьютера, где могут быть сохранены только конечные цифры, что приводит к этому.

0 голосов
/ 12 июля 2020

Эта «ошибка» не является действительной ошибкой. Это происходит от 1/3 == 0,333 [3]. В результате ваш 0,2 - это только завышенное приближение, и вы накапливаете эту ошибку в x. Вот почему в вашем выводе так много цифр. Раунд не позволяет этой неточности накапливаться, чтобы получить такой результат, вам следует использовать функцию round(). Следующий код округляет число до двух цифр после точки.

x = 50
for i in range(50):
    x = round(x - 0.20, 2)
    print(x)

Результат - именно тот, который вы ищете

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