Вывести точное число знаков после запятой для целого числа

Подвиг 9. Имеется график функции f(x) = 0.5x^2 - 2. Необходимо записать генератор, который бы выдавал значения этой функции для аргумента x в диапазоне [a; b] с шагом 0.01. Величины a, b вводятся с клавиатуры в одну строчку через пробел как целые числа (a< b). Вывести на экран первые 20 значений функции с точностью до сотых, взятых из генератора.

P.S. Значения функции вычислять командой:

f(x) = 0.5 * pow(x, 2) - 2.0
a, b = map(int, input().split())

b *= 100
gen = (0.5 * pow(x/100, 2) - 2.0 for x in range(a,b))

for i in range(20):
    print(f"{(next(gen)):0.2f}", end=" ")

У меня выводит -

-2.00 -2.00 -2.00 -2.00 -2.00 -2.00 -2.00 -2.00 -2.00 -2.00 -2.00 -1.99 -1.99 -1.99 -1.99 -1.99 -1.99 -1.99 -1.98 -1.98

в задаче дан ответ :

-2.0 -2.0 -2.0 -2.0 -2.0 -2.0 -2.0 -2.0 -2.0 -2.0 -2.0 -1.99 -1.99 -1.99 -1.99 -1.99 -1.99 -1.99 -1.98 -1.98

Что не так -2.0 и -2.00 ?


Ответы (1 шт):

Автор решения: popovic86

Все спасибо за комментарии, в итоге система на Stepik приняла ответ, через round прям в gen , пробовал в принте но не проходит тест, странно через f строку мне кажется всё таки правильнее...

f"{(next(gen)):0.2f}".replace('00', '0') тоже попробую, кривовато конечно

gen = ( round((0.5 * pow((i/100),2)-2),2) for i in range(a,b))
for i in range(20):
    print((next(gen)), end=" ")
→ Ссылка