Preciznost


Submit solution

Points: 40 (partial)
Time limit: 5.0s
Memory limit: 64M

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Perl, Python

Š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

There are no comments at the moment.