Obliczenia zmiennoprzecinkowe często prowadzą do takich nieścisłości. Problem polega na tym, że liczby nie mogą być dokładnie reprezentowane w ustalonej liczbie bitów.
Aby podać inny przykład (w systemie dziesiętnym), wszyscy zgadzamy się, że 3 * (1/3) = 1
. Jeśli jednak twój kalkulator ma tylko 4 miejsca dziesiętne, 1/3
będzie reprezentowany jako 0.3333
. Gdy zostanie pomnożone przez 3
, otrzymasz 0.9999
nie 1
.
Jako dodatkowe informacje, zmiennoprzecinkowe w większości systemów są zwykle reprezentowane przy użyciu standardu IEEE754. Możesz go wyszukać lub odszukać stronę Wikipedii, by dowiedzieć się więcej. IEEE floating point
Prawdopodobnie zaokrąglić błąd. Ale to * powinno * zaokrąglić do 1 tak czy inaczej, jeśli wyświetla tylko 4 cyfry. – Mysticial
Python daje mi '0.99999999999999989', niezależnie od liczby cyfr, które do niego wprowadzam. To prawdopodobnie błąd zmiennoprzecinkowy i błąd aproksymacji. – Blender
Czy pominąłeś jakieś cyfry? –