Dodam tylko, że jeśli dane te będą dalej obrabiane, albo gdzieś prezentowane (nie jest to tylko ćwiczenie na studia), warto pomyśleć o jednym z dwóch:
- Nie zamieniać na float, zamiast tego skorzystać z
Decimal
a (lub Fractiona
). Albo mnożyć przez Decimal lub Fraction...
- Użyć zaokrąglenia
round
, bo przy mnożeniu przez (przykładowo 0.7, w innych wypadkach też się zdarza) zmiennoprzecinkową, potrafią wychodzić niedokładności na float w pythonie.
>>> from fractions import Fraction
>>> from decimal import Decimal
>>> 6.0*0.7
4.199999999999999
>>> 6*0.7
4.199999999999999
>>> multiplier = Decimal('0.7')
>>> float(6*multiplier)
4.2
>>> # W powyższym Decimala nie przemnożysz przez float. `6.0 * multiplier` będzie miało TypeError.
>>> multiplier = Fraction(7, 10)
>>> float(6*multiplier)
4.2
>>> float(6.0*multiplier)
4.199999999999999
>>> # A tu jak widać, niepotrzebna konwersja na float tworzy ten sam 'błąd'.
Najlepszą opcją będzie traktować wszystko jako Fraction lub Decimal, ewentualnie zaokrąglić, jeśli potrzebujesz ładnych wyników w kg :)