É possível obter um valor "exato"? - página 5

 
WePlexus:
Sim, e a calculadora diz 0,09*5=0,45. :)

só precisa ser normalizada:

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

bem, sanyok, você é um mentiroso.

Minha função:

=0.44.
Eu não verifiquei o seu).
 
abolk:

A normalização só precisa ser feita:

também uma opção ))))

e o que se passa com o número? )))

0.01999999999999999999
 
sanyooooook:

também uma opção ))))

e o que se passa com o número? )))

este é o número máximo com o qual a normalização funciona:

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

se você tomar mais um 9, ele é normalizado para 0,02.

 
abolk:

é o número máximo com o qual a normalização ocorre:

Se você tomar mais um 9, ele é normalizado para 0,02.
não o corte).
 
sanyooooook:
não trunque o número).
o que quer que seja -- O formato de precisão da NormalizeDouble() é 0-8
 
abolk:
tão lateralmente -- o formato de precisão em NormalizeDouble() -- 0-8
então já está de lado))
 
sanyooooook:
então é isso, é tudo o mesmo))

já estamos chegando ao "coração do problema" -- é por isso que "já"

primeiro a decomposição do problema -- depois a composição do problema

ou ainda há algumas pontas soltas?

 
abolk:

já estamos chegando ao "coração do problema" -- é por isso que "já"

primeiro a decomposição do problema -- depois a composição do problema

ou ainda existem alguns pontos inexplicáveis?

sim )

como usar a mesma função (digamos, aquela que você escreveu) para truncar qualquer número de entrada para o número certo de dígitos:

mesmo que seja isto:

0.01999999999999999999

ou isto:

0.09*5
 
sanyooooook:

sim )

como truncar qualquer número de entrada para o número certo de dígitos usando a mesma função:

mesmo que seja isto:

ou isto:

Para resolver este problema, 0,09*5 tem que ser =0,45, não =0,449999999999999999999

e se tal coisa não existe, então o problema é insolúvel