Различия между версиями 3 и 4
Версия 3 от 2022-12-01 15:22:16
Размер: 1614
Редактор: FrBrGeorge
Комментарий:
Версия 4 от 2022-12-01 15:22:59
Размер: 1642
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
Написать метакласс `fixed` с параметром `ndigits` (по умолчанию 3), в котором все возвращаемые обычными (не статическими и не методами класса) методами значения округляются до `ndigits` знаков после запятой, если они вещественные по определению модуля [[py3doc:numbers]]. Написать метакласс `fixed` с параметром `ndigits` (по умолчанию 3), в котором все возвращаемые обычными (не статическими и не методами класса) методами значения округляются с помощью `round()` до `ndigits` знаков после запятой, если они вещественные по определению модуля [[py3doc:numbers]].

Написать метакласс fixed с параметром ndigits (по умолчанию 3), в котором все возвращаемые обычными (не статическими и не методами класса) методами значения округляются с помощью round() до ndigits знаков после запятой, если они вещественные по определению модуля numbers.

   1 from fractions import Fraction
   2 from decimal import Decimal
   3 
   4 class C(metaclass=fixed, ndigits=4):
   5     def div(self, a, b):
   6         return a / b
   7 
   8 print(C().div(6, 7))
   9 print(C().div(Fraction(6), Fraction(7)))
  10 print(C().div(Decimal(6), Decimal(7)))
  • Как выяснилось, в Python 3.10 / 3.11 обычный float и Fraction — вещественные числа, а Decimal — нет!

  • В определении того, что метод — это метод, поможет types

0.8571
8571/10000
0.8571428571428571428571428571

Спойлер:


CategoryHomework

LecturesCMC/PythonIntro2022/Homework_FloatFix (последним исправлял пользователь FrBrGeorge 2022-12-01 15:22:59)