¿Es posible obtener un valor "exacto"? - página 5

 
WePlexus:
Sí, y la calculadora dice 0,09*5=0,45. :)

sólo tiene que ser normalizado:

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

bueno, sanyok, eres un mentiroso.

Mi función:

=0.44.
No he comprobado el tuyo).
 
abolk:

sólo hay que normalizar:

también es una opción )))

¿y qué pasa con el número? )))

0.01999999999999999999
 
sanyooooook:

también es una opción )))

¿y qué pasa con el número? )))

es el número máximo con el que funciona la normalización:

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

si tomas un 9 más, se normaliza a 0,02.

 
abolk:

es el número máximo con el que se produce la normalización:

Si tomas un 9 más, se normalizará a 0,02.
no lo cortes).
 
sanyooooook:
no truncar el número).
lo que sea -- El formato de precisión de NormalizeDouble() es 0-8
 
abolk:
así que de lado -- el formato de precisión en NormalizeDouble() -- 0-8
así que ya está de lado))
 
sanyooooook:
así que eso es todo, es todo lo mismo))

ya estamos llegando al "corazón del problema" -- por eso "ya"

primero la descomposición del problema -- luego la composición del problema

¿o todavía hay algunos cabos sueltos?

 
abolk:

ya estamos llegando al "corazón del problema" -- por eso "ya"

primero la descomposición del problema -- luego la composición del problema

¿o hay todavía algunos puntos sin explicar?

sí )

cómo usar la misma función (digamos, la que tú escribiste) para truncar cualquier número de entrada al número correcto de dígitos:

aunque sea esto:

0.01999999999999999999

o esto:

0.09*5
 
sanyooooook:

sí )

cómo truncar cualquier número de entrada al número correcto de dígitos utilizando la misma función:

aunque sea esto:

o esto:

Para resolver este problema, 0,09*5 tiene que ser =0,45, no =0,449999999999999

y si no existe tal cosa, entonces el problema es irresoluble