Est-il possible d'obtenir une valeur "exacte" ? - page 4

 
sanyooooook:

quelle fonction voulez-vous dire ?

Premier de la ligne ou NL ?

Fonction NL.

Si c'est le cas :

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

Il donne 0,44 au lieu de 0,45.

 
WePlexus:

Fonction NL.

Si c'est le cas :

Il donne 0,44 au lieu de 0,45.


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

Fonction NL.

Si c'est le cas :

Vous obtenez 0,44 au lieu de 0,45.

C'est parce que : MathFloor(valeur/étape)=44

L'entrée est 44.999999999999999999, cette fonction renvoie le nombre entier le plus proche du bas.

pourquoi : valeur/étape(0.45/0.01)=44.9999999999999999 n'est pas ma question )

 
sanyooooook:

vient du fait que : MathFloor(valeur/étape)=44

La valeur d'entrée est 44.99999999999999. Cette fonction renvoie le nombre entier le plus proche du bas.

pourquoi : valeur/étape(0,45*100)=44,9999999999999999 n'est pas ma question).

Merci. :)
 
WePlexus:
Merci. :)
corrigé l'erreur dans le post
 
WePlexus:
Merci. :)

Votre fonction est donc plus correcte)

D'ailleurs, dans ce cas, toutes les fonctions, sauf la mienne, donnent 0,45 ;)

 
cela signifie qu'avant d'utiliser une fonction, les données d'entrée doivent être vérifiées et en fonction du nombre, vous choisissez l'une ou l'autre fonction)
 
sanyooooook:

donc votre fonction est plus correcte )

d'ailleurs dans ce cas toutes les fonctions sauf la mienne donnent 0.45 ))

Eh bien, Sanyok, tu es un menteur.

ma fonction :

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

ma fonction

est =0,44.
Oui, mais la calculatrice dit 0,09*5=0,45. :)
 
WePlexus:
Exact, et le résultat dans la calculatrice est 0.45. :)

C'est vrai, je ne faisais pas attention au début.