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

 
sanyooooook:

a que função você se refere?

Primeiro através da linha ou NL?

Função NL.

Em caso afirmativo:

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

Ele dá 0,44 ao invés de 0,45.

 
WePlexus:

Função NL.

Em caso afirmativo:

Ele dá 0,44 ao invés de 0,45.


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

Função NL.

Em caso afirmativo:

Ele dá 0,44 ao invés de 0,45.

Isto é porque: MathFloor(valor/etapa)=44

A entrada é 44.999999999999999999, esta função retorna o número inteiro mais próximo da base.

porque: valor/etapa(0.45/0.01)=44.999999999999999999 não é minha pergunta )

 
sanyooooook:

é pelo fato de que: MathFloor(valor/etapa)=44

O valor de entrada é 44,999999999999999999. Esta função retorna o inteiro mais próximo da base.

porque: valor/etapa(0,45*100)=44,999999999999999999 não é minha pergunta).

Obrigado. :)
 
WePlexus:
Obrigado. :)
corrigiu o erro no posto
 
WePlexus:
Obrigado. :)

Portanto, sua função é mais correta )

A propósito, neste caso todas as funções, exceto a minha, dão 0,45 ))

 
significa que antes de usar uma função, os dados de entrada devem ser verificados e dependendo de qual número você escolher uma ou outra função)
 
sanyooooook:

para que sua função seja mais correta )

a propósito, neste caso, todas as funções, exceto a minha, dão 0,45 ))

bem, sanyok, você é um mentiroso.

minha função:

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

minha função

é =0,44.
Sim, mas a calculadora diz 0,09*5=0,45. :)
 
WePlexus:
Certo, e o resultado na calculadora é 0,45. :)

Certo, eu não estava prestando atenção no início.