Je fais de l'arithmétique en virgule flottante et j'ai des problèmes de précision. La valeur résultante est différente sur deux machines pour la même entrée. J'ai lu le poste @Why can't I multiply a float? et aussi lu d'autres documents sur le web & compris qu'il s'agit de la représentation binaire de virgule flottante et sur la machine epsilon. Cependant, je voulais vérifier s'il y avait un moyen de résoudre ce problème/Certains travaillent pour l'arithmétique en virgule flottante en C++ ?? Je convertis un flotteur en short non signé pour le stockage et suis en train de convertir en cas de besoin. Cependant, quand je le convertis en short non signé, la précision (à 6 décimales) reste correcte sur une machine mais échoue sur l'autre.Existe-t-il une solution pour les problèmes arithmétiques à virgule flottante en C++?
//convert FLOAT to short
unsigned short sConst = 0xFFFF;
unsigned short shortValue = (unsigned short)(floatValue * sConst);
//Convert SHORT to FLOAT
float floatValue = ((float)shortValue/sConst);
Quel est exactement le problème?Le simple fait que le résultat de la multiplication soit légèrement différent sur deux machines différentes n'est pas un problème en soi. Pourquoi cela en constitue-t-il un pour vous? –
Puisqu'il n'y a aucun problème réel indiqué, cette question ne peut pas être répondue correctement. Voter pour fermer n'est pas une vraie question. –
a mis à jour la question! –