Python: задачки и вопросы
Развёрнутое пояснение:
1. from fractions import Fraction импортирует рациональное число.
2. Fraction(0.1) берёт не 1/10, а точное значение float 0.1 — дробь с большим знаменателем.
3. То же происходит с Fraction(0.2) и Fraction(0.3).
4. a + b вычисляет сумму двух таких двоичных дробей.
5. Эта сумма не равна дроби, полученной из float 0.3, потому что 0.1 + 0.2 ≠ 0.3 в двоичной плавающей арифметике.
6. Сравнение возвращает False.
Почему это важно: при финансовых расчётах и точных вычислениях Fraction следует создавать из строк или целых чисел, а не из float, иначе двоичные погрешности сохраняются в «точном» рациональном типе.
2. Fraction(0.1) берёт не 1/10, а точное значение float 0.1 — дробь с большим знаменателем.
3. То же происходит с Fraction(0.2) и Fraction(0.3).
4. a + b вычисляет сумму двух таких двоичных дробей.
5. Эта сумма не равна дроби, полученной из float 0.3, потому что 0.1 + 0.2 ≠ 0.3 в двоичной плавающей арифметике.
6. Сравнение возвращает False.
Почему это важно: при финансовых расчётах и точных вычислениях Fraction следует создавать из строк или целых чисел, а не из float, иначе двоичные погрешности сохраняются в «точном» рациональном типе.
✍1