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

 
sanyooooook:

¿A qué función se refiere?

¿Primero en la línea o en NL?

Función NL.

Si es así:

NL (2, 0.09 * 5); // 0.44

Da 0,44 en lugar de 0,45.

 
WePlexus:

Función NL.

Si es así:

Da 0,44 en lugar de 0,45.


   Print(NL(DIGITS,0.45));
2014.10.04 13:13:03.089 normalize EURUSD,H4: 0.45
 
WePlexus:

Función NL.

Si es así:

Se obtiene 0,44 en lugar de 0,45.

Esto se debe a que: MathFloor(valor/paso)=44

La entrada es 44.99999999999999, esta función devuelve el número entero más cercano desde abajo.

por qué: valor/paso(0,45/0,01)=44,99999999999999 no es mi pregunta )

 
sanyooooook:

es por el hecho de que: MathFloor(valor/paso)=44

El valor de entrada es 44.999999999999. Esta función devuelve el entero más cercano de la parte inferior.

por qué: valor/paso(0,45*100)=44,99999999999999 no es mi pregunta).

Gracias. :)
 
WePlexus:
Gracias. :)
corregido el error en el post
 
WePlexus:
Gracias. :)

Así que su función es más correcta )

Por cierto, en este caso todas las funciones excepto la mía dan 0,45 ))

 
significa que antes de utilizar una función, hay que comprobar los datos de entrada y dependiendo de qué número se elige una u otra función)
 
sanyooooook:

por lo que su función es más correcta )

por cierto en este caso todas las funciones excepto la mía dan 0,45 ))

bueno, sanyok, eres un mentiroso.

mi función:

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

mi función

es =0,44.
Sí, pero la calculadora dice 0,09*5=0,45. :)
 
WePlexus:
Correcto, y el resultado en la calculadora es 0,45. :)

Cierto, no estaba prestando atención al principio.