Comparació de nombres reals¶
Degut a la forma com es representen els nombres reals en un ordinador (vegeu Floating-Point Arithmetic: Issues and Limitations), sempre es poden produir errors de precisió en fer operacions entre ells. Per exemple, per comparar dos nombres reals per veure si són iguals, pot ser millor no fer-ho utilitzant l’operador d’igualtat ==, sinó comparar-los utilitzant un marge d’error (un valor real petit).
Donat un marge d’error \(\epsilon\), direm que dos nombres reals \(a\) i \(b\) són propers si \(\|a-b\| < \epsilon\). També direm que un nombre \(a\) és clarament més gran que un altre \(b\) si \(a\) i \(b\) no són propers i \(a>b\). I anàlogament, direm que \(a\) és clarament més petit que un altre \(b\) si \(a\) i \(b\) no són propers i \(a<b\)
En el mòdul creals (fitxer creals.py), dissenyeu la
funció següent:
- creals.compara(x, y, eps)¶
Donats tres nombres reals, retorna un string, que serà
'MENOR','MAJOR'o'PROPER'depenent de si el nombre x és clarament més petit que y, clarament més gran que y o proper a y amb un marge d’error eps.Per exemple:
>>> from creals import compara >>> compara(10.0, 10.002, 0.0025) 'PROPER' >>> compara(10.0, 10.004, 0.0025) 'MENOR' >>> compara(10.0, 9.0, 0.25) 'MAJOR'
Nota
Podeu descarregar el fitxer amb tests test-compara.txt.
Nota
Disposeu d’una solució al fitxer creals.py