limit floats to two digits in lab3

This commit is contained in:
2026-04-01 14:23:24 +07:00
parent dcf434bd10
commit 8b075a5bac
+9 -3
View File
@@ -1,4 +1,5 @@
import math
from decimal import Decimal, InvalidOperation
class Worker:
@@ -47,6 +48,11 @@ class Worker:
raise ValueError("Оклад должен быть числом")
if not math.isfinite(salary):
raise ValueError("Оклад не может быть NaN или бесконечностью")
salary_decimal = Decimal(str(salary))
if salary_decimal.as_tuple().exponent < -2:
raise ValueError("Оклад должен содержать не более 2 знаков после запятой")
if salary < 1000:
raise ValueError("Оклад слишком маленький (<1000)")
if salary > 10_000_000:
@@ -91,13 +97,13 @@ def input_salary() -> float | None:
while True:
salary_str = input("Введите оклад: ").strip().replace(",", ".")
try:
salary = float(salary_str)
except ValueError:
salary_decimal = Decimal(salary_str)
except InvalidOperation:
print("Ошибка: оклад должен быть числом")
continue
try:
return Worker.validate_salary(salary)
return Worker.validate_salary(float(salary_decimal))
except ValueError as e:
print("Ошибка:", e)