Решение задачи с циклом while
Нужно чтобы код считал пока m не будет равно 95, подскажите мою ошибку пожалуйста
m=0
i=0
k=0
n=0
while (m!=95):
i=+0.01
k=i+i/2
n=k+k/2
m=n+n/2
print (m, i)
Задача была такая Задуманное число при сложении этого же числа с его половиной, сложении полученного числа с его треть и сложении нового полученного числа с его четвертью дают 95
Помогите пожалуйста исправить ошибку в цикле
Ответы (1 шт):
Ваша главная ошибка заключается в том, что при выполнении численных расчётов, ни в коем случае нельзя сравнивать на равенство числа с плавающей точкой. Только целые. Число с плавающей точкой - всегда приближённое значение. Точного равенства Вы не получите никогда и цикл надо переписать так:
i = 0
m = 0
while abs(m-95) > 0.0001:
i = i+0.01
k = i+i/2
n = k+k/3
m = n+n/4
print (m, i)
Тогда, после запуска программы, получим:
95.00000000000253 38.00000000000101
С учётом ошибок округления, ответ 38:
38 + 19 = 57 57 + 19 = 76 76 + 19 = 95