Preciznost
Školsko natjecanje / Primjena algoritama 2015. / Osnovna škola (8. razred) - 1. zadatak
Ako u svom programskom jeziku napišeš usporedbu \(0.1 + 0.2 == 0.3\) (ili \(0.1 + 0.2 = 0.3\)) rezultat će vjerojatno biti False
! Drugim riječima, računalo misli da su broj \(0.1 + 0.2\) i broj \(0.3\) različiti, iako očito nisu. Kako je to moguće?
Razlog je nepreciznost u pohrani i računanju s realnim brojevima. Većinu realnih brojeva računala ne mogu posve točno pohraniti jer ti brojevi imaju beskonačno mnogo znamenaka (binarnih, naravno) iza decimalne točke. Prilikom računanja s takvim brojevima, nepreciznost se povećava. Primjerice, na autorovom računalu Python ispisuje sljedeće:
>>> 0.1 + 0.2
0.30000000000000004
Zbog toga se realni brojevi najčešće uspoređuju tako da se proglašavaju jednakima ako su "skoro jednaki", tj. ako se međusobno razlikuju za manje od \(0.000001\). Ako to ne vrijedi, uspoređuju se na uobičajen način. Napiši program koji unosi realne brojeve \(A\), \(B\) i \(C\) te uspoređuje broj \(A + B\) s brojem \(C\) na ovaj način.
Ulazni podaci
U tri retka nalaze se tri pozitivna realna broja \(A\), \(B\) i \(C\), manja od \(10\).
Izlazni podaci
U jedini redak ispiši rezultat usporedbe broja \(A + B\) i broja \(C\): znak =
ako su jednaki, znak >
ako je prvi broj veći, a znak <
ako je drugi broj veći.
Primjeri test podataka
Ulaz
0.1
0.2
0.3
Izlaz
=
Ulaz
0.3
0.6
0.9
Izlaz
=
Ulaz
0.5
0.5
1.001
Izlaz
<
Comments