Messagerie


Décimaux

volgot
vendredi 24 octobre 2014 à 13:22
Hello,
J'ai un pb.
Si je fais 5*0.1 au lieu de me renvoyer 0.5, ça me renvoie : 0.49999999995348123 (un truc dans le genre, avec 17 chiffres derrière la virgule).

En interne ou en compil exe c'est ok. C'est en export flash que ça bug.

Une solution ?
Monos
2713 messages
Fusion 2.5 Dev
Fusion 2.5+ Exporteur Android Exporteur HTML5
vendredi 24 octobre 2014 à 14:22
test 5.0*0.1
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
vendredi 24 octobre 2014 à 14:30
5 / 10.0
volgot
vendredi 24 octobre 2014 à 16:22
5/10.0 j'avais vérifié ça marche bien en effet mais dans le truc que je veux faire, j'ai besoin de multiplier par des décimaux :(
5.0*0.1 j'avais pas pensé... malheureusement ça ne change rien j'ai toujours 0.49999....
Pit73
1055 messages
Fusion 2.5 Dev
Exporteur iOS Exporteur Android Exporteur HTML5
vendredi 24 octobre 2014 à 16:38
Tu as essayé la patte de lapin?
volgot
vendredi 24 octobre 2014 à 16:42
???

Euh tu peux traduire ? ;)
Pit73
1055 messages
Fusion 2.5 Dev
Exporteur iOS Exporteur Android Exporteur HTML5
vendredi 24 octobre 2014 à 16:54
http://www.le-monde-des-lapins.fr/histoire/superstitions/
Angelgame
vendredi 24 octobre 2014 à 16:58
ça te fait pareil avec par exemple 6*0.1 ?
volgot
vendredi 24 octobre 2014 à 17:02
arf ok...
je pensais que c'était une technique de programmation...  :-\

Bon je l'ai signalé dans la bugbox en tout cas. C'est pas fréquent qu'on en ait besoin (apparemment je suis le seul) mais quand ça arrive c'est prise de tête !
volgot
vendredi 24 octobre 2014 à 17:03
@Angelgame oui
Angelgame
vendredi 24 octobre 2014 à 17:03
C'est dans une variable ou dans un compteur ?
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
vendredi 24 octobre 2014 à 17:04
Je ne connais pas ton programme mais en amont si tu traduis tes "*0.1" en "/10.0" via un tableau tu ne peux pas contourner le pb ?
+
volgot
vendredi 24 octobre 2014 à 17:05
pareil avec random(50) ou en passant par un compteur une valeur modif ou globale...

Non le hic c'est vraiment le  "*0.1" (ou "*0.2" ...) qui déconne !
volgot
vendredi 24 octobre 2014 à 17:08

Je ne connais pas ton programme mais en amont si tu traduis tes "*0.1" en "/10.0" via un tableau tu ne peux pas contourner le pb ?
+


J'ai construit mon programme en pensant que ça marcherait (puisque les tests en interne marchaient) et au final ce serait assez compliqué de tout changer...  Mais je vais regarder à nouveau si je peux pas bidouiller. Pourquoi pas avec un tableau je vais voir...
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
vendredi 24 octobre 2014 à 17:09
Bon ben bug box en tout cas.
volgot
vendredi 24 octobre 2014 à 17:11
Oui ça c'est fait la bugbox. Là c'est clair que c'est un bug !

Une idée me vient. C'est ptet idiot mais je connais pas le calculateur double précision. Je m'en sers jamais. Ca pourrait m'aider dans cette histoire ?
Angelgame
vendredi 24 octobre 2014 à 17:23
1. Tu affiches ton resultat dans un compteur
2. Tu mets dans les propiétés du compteur resultat "valeur a virgule flottante" dans les 2 cases 1

ça arrondie en gros

Chez moi ça marche en tout cas, ça peut contourner peut être ton problème
volgot
vendredi 24 octobre 2014 à 17:32
Merci Angelgame :)
J'avais regardé de ce côté là aussi. Mais le problème c'est que le nombre décimal n'a pas forcément qu'un chiffre après la virgule...

Sinon pour info, avec l'objet double précision, j'y ai cru parce qu'avec :
Mul$( "Calculateur double-précision", string$( "5" ), string$( "0.1" ) ) ça affiche bien 0.5
Mais avec :
Mul$( "Calculateur double-précision", Str$(5 ), Str$(0.1 ) ) ça recommence à merdouiller...

Autrement dit il faut repasser les valeurs systématiquement dans des chaînes avant de le repasser dans le calculateur double précision qu le reconvertit...
Je pense que je vais reconstruire le moteur en passant par les divisions finalement, ça sera ptet plus simple que de chercher à contourner le bug j'ai l'impression :(
Angelgame
vendredi 24 octobre 2014 à 17:38
Désolé je vois pas du tout comment contourner ce probleme, j'espere que ce bug sera vite résolu
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 94 visiteurs au total

Derniers messages