Arrondir les nombres dans MT4 via NormalizeDouble - page 10

 
Алексей Тарабанов:
Au début des années 1980, Antonina Loseva, diplômée de l'école de programmation de Noginsk, travaillait sous ma direction attentive. Voici comment elle a résolu le problème de l'arrondi aux nombres entiers : int A = double B + 0,5

Merci pour votre histoire, maintenant "int A = double B + 0.5" est résolu : int A = (int)MathCeil(double B) ;

Mais dans ce cas, la question est de savoir comment couper sans arrondir.

 
lilita bogachkova:

Merci pour votre histoire, maintenant "int A = double B + 0.5" est résolu : int A = (int)MathCeil(double B) ;

Mais dans ce cas, il s'agit de savoir comment couper sans arrondir.

Il est facile de couper sans arrondir, il suffit de ne pas arrondir (ne pas augmenter le double de 0,5 pas d'arrondi).

Comparez votre construction à la mienne en termes de vitesse, et la vôtre est incorrecte, désolé...

 
Dmitry Fedoseev:

DoubleToStr(0.9999,3)=1.000

Alors, tirez vos conclusions.

Qu'est-ce que le 3 a à voir avec ça ? Nous utilisons Bid et Digits.

Je ne sais pas de quoi tu parles. Dans un autre fil, j'ai discuté de ce sujet pendant trois pages. Que comment couper ici par exemple sur votre exemple ne connaissant pas le nombre de caractères fractionnaires et vous avez prouvé que le 0-et ne comptent pas et droit.

DoubleToStr(0.9999,4)

et ensuite le mode un caractère

 
Алексей Тарабанов:

Parer sans arrondir est facile, il suffit de ne pas arrondir (ne pas augmenter le double de 0,5 pas d'arrondi).

...

Un code ?

 
Vasyl Nosal:

int A =double B

Est-ce que votre cœur bat la chamade ?

 
Vasyl Nosal:

Qu'est-ce que le 3 a à voir avec ça ? Nous utilisons Bid et Digits.

Je ne sais pas de quoi tu parles. Dans un autre fil, j'ai discuté de ce sujet pendant trois pages. Que comment couper ici par exemple sur votre exemple ne connaissant pas le nombre de caractères fractionnaires et vous avez prouvé que 0-et ne comptent pas et droit.

Je ne sais pas ce que tu as là. Nous tronquons en quelque sorte à un nombre donné de caractères.
 
Алексей Тарабанов:

int A =double B

Est-ce que votre cœur bat la chamade ?

Ce code existe-t-il déjà ?

C'est encore mieuxNormalizeDouble(1.15-0.05,1) ;

:)))))))))))))))

 
Dmitry Fedoseev:
Je ne sais pas de quoi tu parles. Nous semblons rejeter jusqu'à un certain nombre de caractères.
Nous le faisons. Mais nous convertissons le double en une chaîne de caractères sur le nombre entier de caractères fractionnés.
 
Vasyl Nosal:

Ce code existe-t-il déjà ?

C'est encore mieuxNormalizeDouble(1.15-0.05,1) ;

:)))))))))))))))

Oui, c'est amusant...
 
Vasyl Nosal:

...

DoubleToStr(0.99999,4)

et ensuite le mode un caractère

Que pensez-vous de ça ?