È possibile ottenere un valore "esatto"? - pagina 5

 
WePlexus:
Sì, e la calcolatrice dice 0,09*5=0,45. :)

ha solo bisogno di essere normalizzato:

//double d=0.019999999999999999;
double d=NormalizeDouble(0.09*5,2);
double e=(int)(d*100)/100.0;
Print("e=",e);
 
abolk:

Beh, Sanyok, sei un bugiardo.

La mia funzione:

=0.44.
Non ho controllato il tuo).
 
abolk:

La normalizzazione deve solo essere fatta:

anche un'opzione )))

e che cos'è questo numero? )))

0.01999999999999999999
 
sanyooooook:

anche un'opzione )))

e che cos'è questo numero? )))

questo è il numero massimo con cui funziona la normalizzazione:

double d=NormalizeDouble(0.01999999,18);
double e=(int)(d*100)/100.0;
Print("e=",e);

se si prende un altro 9, è normalizzato a 0,02.

 
abolk:

è il numero massimo con cui avviene la normalizzazione:

Se prendi un altro 9, si normalizzerà a 0,02.
non tagliarlo).
 
sanyooooook:
non troncare il numero).
qualunque -- Il formato di precisione di NormalizeDouble() è 0-8
 
abolk:
quindi di lato -- il formato della precisione in NormalizeDouble() -- 0-8
quindi è già di traverso))
 
sanyooooook:
quindi è così, è tutto uguale))

stiamo già arrivando al "cuore del problema" - ecco perché "già"

prima la decomposizione del problema - poi la composizione del problema

o ci sono ancora delle questioni in sospeso?

 
abolk:

stiamo già arrivando al "cuore del problema" - ecco perché "già"

prima la decomposizione del problema - poi la composizione del problema

o ci sono ancora dei punti inspiegabili?

sì )

come usare la stessa funzione (diciamo, quella che avete scritto voi) per troncare qualsiasi numero in ingresso al giusto numero di cifre:

anche se è questo:

0.01999999999999999999

o questo:

0.09*5
 
sanyooooook:

sì )

come troncare qualsiasi numero in ingresso al giusto numero di cifre usando la stessa funzione:

anche se è questo:

o questo:

Per risolvere questo problema, 0,09*5 deve essere =0,45, non =0,44999999999999999

e se non esiste una cosa del genere, allora il problema è irrisolvibile