Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Giorgio Pastore <pastgio@units.it> |
|---|---|
| Newsgroups | it.comp.java |
| Subject | Re: codice instabile |
| Date | 2020-09-19 11:25 +0200 |
| Message-ID | <hsm14mFnboqU1@mid.individual.net> (permalink) |
| References | <1cf45f7a-aa66-4ae3-bcc1-e60a2e50ee69n@googlegroups.com> |
Il 09/09/20 02:36, pino mugo ha scritto:
> Questa successione numerica definita per ricorrenza deve dare ovviamente sempre lo stesso valore per ogni termine ( cioè sempre 1/77) , invece da tutti valori diversi!
....
> double s = 1.0/77.0;
...
> for (int i = 1; i <= n; ++i)
> {
> System.out.print(s + " x ");
>
> double r = 78.0 * s - 1;
> s = r;
>
> }
....
"Deve" è una parola forte. Meglio dire:
dovrebbe dare lo stesso valore SE l'aritmetica floating point dei
computer fosse la stessa dei razionali della matematica.
Ma non è così.
Benvenuto nel mondo dei floating point con un numero limitato di bit!
1.0/77.0 non è rappresentabile esattamente con un numero finito di cifre
binarie. Ergo, la rappresentazione binaria introduce un'approssimazione
a livello delle ultime cifre sgnificative che la tua successione
amplifica rapidamente.
Per saperne di più:
https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
Giorgio
PS il tutto è indipendente dal linguaggio!
Back to it.comp.java | Previous | Next — Previous in thread | Next in thread | Find similar
codice instabile pino mugo <tripponelafricano@gmail.com> - 2020-09-08 17:36 -0700 Re: codice instabile Giorgio Pastore <pastgio@units.it> - 2020-09-19 11:25 +0200 Re: codice instabile rootkit <rootkit@email.it> - 2020-09-20 05:20 -0700
csiph-web