Naprawdę masz tutaj dwa pytania.
Dlaczego w ogóle ktoś potrzebuje matematyki zmiennoprzecinkowej?
Jak zauważa Karl Bielefeldt, liczby zmiennoprzecinkowe pozwalają modelować ciągłe wielkości - i można je znaleźć wszędzie - nie tylko w świecie fizycznym, ale nawet w miejscach takich jak biznes i finanse.
W mojej karierze programistycznej korzystałem z matematyki zmiennoprzecinkowej: chemii, pracy w AutoCAD, a nawet pisania symulacji Monte Carlo do prognoz finansowych. W rzeczywistości jest facet o imieniu David E. Shaw, który zastosował techniki Walling Point oparte na liczbach zmiennoprzecinkowych, aby zarobić miliardy.
I oczywiście jest grafika komputerowa. Doradzam w opracowywaniu cukierków dla interfejsów użytkownika, a próbowanie tego w dzisiejszych czasach bez solidnego zrozumienia zmiennoprzecinkowego, trygonometrii, rachunku różniczkowego i algebry liniowej byłoby jak pokazanie się w walce na broń za pomocą scyzoryka.
Dlaczego ktoś miałby float kontra double ?
Dzięki standardowym reprezentacjom IEEE 754 32-bitowa liczba zmiennoprzecinkowa daje około 7 cyfr dziesiętnych dokładności i wykładniki w zakresie od 10 do 38 do 10 38 . 64-bitowe podwójne daje około 15 cyfr dziesiętnych dokładności i wykładników w zakresie od 10-307 do 10 307 .
Może się wydawać, że pływak wystarczyłby na to, czego ktokolwiek by potrzebował, ale tak nie jest. Na przykład wiele rzeczywistych wielkości mierzy się więcej niż 7 cyframi dziesiętnymi.
Ale bardziej subtelnie, istnieje problem zwany potocznie „błędem zaokrąglenia”. Binarne reprezentacje zmiennoprzecinkowe są ważne tylko dla wartości, których części ułamkowe mają mianownik o sile 2, np. 1/2, 1/4, 3/4 itd. Aby przedstawić inne ułamki, np. 1/10, „zaokrąglasz” wartość do najbliższej frakcji binarnej, ale to trochę źle - to jest „błąd zaokrąglenia”. Następnie, gdy robisz matematykę na tych niedokładnych liczbach, niedokładności w wynikach mogą być znacznie gorsze niż na początku - czasami procentowe odsetki błędów mnożą się, a nawet kumulują się wykładniczo.
W każdym razie, im więcej cyfr binarnych będziesz musiał pracować, tym bliżej zaokrąglonej reprezentacji binarnej będzie liczba, którą próbujesz reprezentować, więc błąd zaokrąglenia będzie mniejszy. Następnie, gdy wykonujesz na nim matematykę, jeśli masz dużo cyfr do pracy, możesz wykonać o wiele więcej operacji, zanim skumulowany błąd zaokrągleń pojawi się tam, gdzie jest problem.
W rzeczywistości 64-bitowe podwojenia z 15 cyframi dziesiętnymi nie są wystarczające do wielu zastosowań. Użyłem 80-bitowych liczb zmiennoprzecinkowych w 1985 roku, a IEEE definiuje teraz 128-bitowy (16-bajtowy) typ liczb zmiennoprzecinkowych, do którego mogę sobie wyobrazić zastosowania.