Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.java > #9365

Re: codice instabile

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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