Double vs FLOAT - erreur MathFloor peu claire - page 3

 

Notez que le nombre normalisé, lorsqu'il est sorti dans le journal à l'aide de Print(), peut contenir plus de décimales que prévu. Par exemple,

puis dans le commentaire le même

 
fxsaber:
#define TOSTRING(A) #A + " = " + (string)(A) + " "

void OnStart()
{
  double Price1 = 105143;
  double Price2 = Price1 - 1 e-11;

  Print(TOSTRING(Price1) + TOSTRING(MathFloor(Price1)) +
        TOSTRING(Price2) + TOSTRING(MathFloor(Price2)) +
        TOSTRING(Price1 > Price2));
}
Résultat
Price1 = 105143.0 MathFloor(Price1) = 105143.0 Price2 = 105143.0 MathFloor(Price2) = 105142.0 Price1>Price2 = true
Ne prenez pas au pied de la lettre le dédoublement des chiffres.

Merci. Je dois avoir trouvé la bonne solution après tout, mais j'avais peur de faire une erreur à cause de l'alignement incorrect !

 

Le reste d' un nombre non normalisé divisé par un autre nombre non normalisé, le résultat est dans tous les cas non normalisé.

Cette fonction devrait être totalement supprimée de la langue, afin de ne pas traumatiser la psyché immature.

 
Vladislav Andruschenko:

J'ai peut-être trouvé la bonne solution après tout.

Malheureusement, votre code est la démonstration d'une incompréhension totale de ce que vous faites. Essayez d'aller au fond du problème.
 
Dmitry Fedoseev:

Le reste d' un nombre non normalisé divisé par un autre nombre non normalisé, le résultat est dans tous les cas non normalisé.

Cette fonction devrait être totalement supprimée de la langue, afin de ne pas traumatiser la psyché immature.

Eh bien, tout est normalisé pour moi. C'est ce qui est si drôle.
 
Vladislav Andruschenko:
C'est bon pour moi. C'est la partie délicate.
Vous faites des conversions inutiles qui vous font perdre des signes.

Ne normalisez qu'avant d'utiliser directement les résultats de vos calculs. Évitez autant que possible les conversions de chiffres et les conversions à l'avance.
 
Andrey Dik:
Vous effectuez des conversions inutiles qui entraînent une perte de caractères.
Ce sont des codes déjà désespérés..... Je l'ai fait de différentes manières. Mais comme dit plus haut. Probablement à cause de l'erreur que j'ai prise, je péchais sur l'erreur. Bien que ces variables soient également défaillantes dans le code.

Merci à tous pour votre aide et vos suggestions. Mais tout fonctionne clairement avec le flotteur.
 
Vladislav Andruschenko:
avec float tout fonctionne clairement.
L'une des pires recommandations est de passer du double au flottant.
 
Vladislav Andruschenko:
C'est bon pour moi. C'est ça qui est drôle.
Où est-ce que c'est normal ?
 
Vladislav Andruschenko:
C'est déjà des codes désespérés..... Je l'ai fait de différentes manières. Mais comme dit plus haut. Probablement parce que j'ai accepté à tort de commettre une erreur. Bien que ces variables soient également défaillantes dans le code.

Merci à tous pour votre aide et vos suggestions. Mais tout fonctionne clairement avec le flotteur.
Le flottement est une castration de chiffres qui ne vous donne aucun avantage. Il est préférable de faire face à toutes les pertes de conversions et d'utiliser la plus grande précision possible - le double.