Rozdział 2
Rozważmy następujący przykład:
octave:l> x=2“30; octave:2> x+2~-22==x, x+2"-23==x ans =0 ans = 1
Choć nieznacznie, liczba x + 2~22 różni się od x, dlatego ich porównanie zwraca wartość 0 (czyli fałsz). Takiego samego wyniku oczekujemy również w drugim przypadku, kiedy x porównywany jest z x+2~23. Tutaj jednak komputer zwraca wartość 1 (prawda), co oznacza, że traktuje obie liczby jako identyczne.
Ze względu na ograniczoną pamięć komputery nie mogą przechowywać liczb z dowolną dokładnością. Konieczne jest wprowadzenie pewnych przybliżeń (tzw. reprezentacji), w ramach których liczba daje się przedstawić za pomocą skończonej (ustalonej) ilości bitów. Powyższy przykład to właśnie efekt skończonej dokładności maszyny liczącej. Program, w którym dokonano obliczeń (w tym wypadku GNU Octave), używa zbyt małej ilości bitów, aby przedstawić sumę x + 2-23 dokładnie.
Efekty związane ze skończoną dokładnością nie zawsze muszą stanowić poważny problem w obliczeniach. Licząc na kartkach większość z nas i tak pewnie zaniedbałaby 2-23 w porównaniu z 230. Należy być jednak świadomym tego, że nie zawsze wynik obliczeń na komputerze będzie taki jak tych dokładnych (gdyby te ostanie były możliwe do przeprowadzenia).
Zazwyczaj programista ma do wyboru kilka reprezentacji (typów danych), które różnią się długością słowa, czyli ilością bitów użytych do przedstawienia liczb. Ponadto inaczej na ogół reprezentowane są liczby całkowite, a inaczej -rzeczywiste.
Liczby całkowite reprezentowane są na komputerze w sposób dokładny, choć oczywiście jest ich tylko skończona ilość. W zależności od tego, czy korzystamy
12