Wpis z mikrobloga

Decimal Type
Od dawna wiadomo ( ͡° ͜ʖ ͡°), że:

0.1 + 0.1 + 0.1 - 0.3 == 5.551115123125783e-17
Jest to wynik bardzo bliski zeru (nie zero!) ale końcowy użytkownik nie takiego rezultatu by oczekiwał, więc jak to "naprawić"?
Otóż jest taki moduł jak decimal:

from decimal import Decimal
print(Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3'))
# 0.0

Ale warto zwrócić tutaj uwagę na:

from decimal import Decimal
print(Decimal(0.1) + Decimal(0.1) + Decimal(0.1) - Decimal(0.3))
# 2.775557561565156540423631668E-17

Dlaczego tak jest?
W pierwszym przykładzie jako argument została przekazana liczba w postaci string a w drugim po prostu liczba zmiennoprzecinkowa.
Moduł dostępny w wersji #python2.7 oraz #python3

Jak macie coś do dodania to piszcie ( )!
#programowanie #python #pythonziken
  • 6
Uważam że prewencyjnie nie ma co tego wrzucac, lepiej zakładac że wszyscy podstawy przerobili, a jak taki problem sami napotkają to sobie z nim poradzą za pomocą googla lub wykopu.

Wszak te informacje to nie jest jakas wiedza tajemna czy niedostepna, a raczej cos co się zawiera w każdym wstępie do języka programowania