При а = 1, b = -1, c = -2 выводится -1.000000 и 2.000000. Как убрать ненужные ноли после запятой, не нарушая правильности ответов?
При а = 1, b = -1, c = -2 выводится -1.000000 и 2.000000.
Как убрать ненужные ноли после запятой, не нарушая правильности ответов?
import math
a = float(input())
b = float(input())
c = float(input())
D = b ** 2 - 4 * a * c
if D > 0:
x1 = (-b + math.sqrt(D)) / (2 * a)
x2 = (-b - math.sqrt(D)) / (2 * a)
if x1 > x2:
print(('{0:.6f}'.format(x2)), ('{0:.6f}'.format(x1)), end='')
elif x1 < x2:
print(('{0:.6f}'.format(x1)), ('{0:.6f}'.format(x2)), end='')
elif D == 0:
x1 = -b / (2 * a)
if x1 % math.floor(x1) == 0:
print(int(x1))
elif D < 0:
print('')
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
используйте округление до 6 знака:
round(x, 6)
чем просто вывод с точностью в 6 знака... всегда
{0:.6f}'.format(x1)
код:
D = b ** 2 - 4 * a * c
if D > 0:
x1 = (-b + math.sqrt(D)) / (2 * a)
x2 = (-b - math.sqrt(D)) / (2 * a)
if x1 > x2:
print(round(x2, 6), round(x1, 6), end='')
elif x1 < x2:
print(round(x1, 6), round(x2, 6), end='')
elif D == 0:
x1 = -b / (2 * a)
if x1 % math.floor(x1) == 0:
print(int(x1))
elif D < 0:
print('')
P.S.
кстати гораздо проще вместо
if x1 > x2:
print(round(x2, 6), round(x1, 6), end='')
elif x1 < x2:
print(round(x1, 6), round(x2, 6), end='')
выводить так:
print(round(min(x1, x2), 6), round(max(x1, x2), 6), end='')
P.P.S.
ну и вы понимаете, что при a = 0 у вас D = 0 и происходит деление на 0?
при полном решении квадратного уравнения надо учесть что
- оно может быть не квадратным, а линейным (
a = 0) - оно может содержать бесконечное кол-во решений (
a = 0, b = 0)
P.P.P.S.
вы же понимаете, что в этом коде:
elif D == 0:
x1 = -b / (2 * a)
if x1 % math.floor(x1) == 0:
print(int(x1))
вывод результата будет только в 1 случае - если решение является целым числом?
Автор решения: Artem Davletov
→ Ссылка
Вы сами устанавливаете формат вывода, напишите '{0:.0f}'.format(x2) вместо '{0:.6f}'.format(x2)