[DIR MX] bug ou division par Zero dans un calcul ?
Le
Twinky
Hello
Dans un tableau récapitulatif d'un jeu, je calcule le pourcentage de
réussite du niveau terminé
1 )-
soit :
-- Exemple pour :
-- gUserPoint = 25
-- gPointMaxi = 100
gPointMaxi = 100
Pourcentage = float(gUserPoint / gPointMaxi) * 100
member("pourcent").text = string(Pourcentage&&"%")
on obtient ainsi le %, mais director ne veut rien savoir et affiche 0,00 %
<== oops ?????
de plus je n'ai pas d'erreur de script, ni un msg d'erreur de division par
zéro, donc je suis en pleine interrogation
à savoir < >BUG ou division par zéro ????? < >
2 )-
alors qu'en faisant ceci :
Pourcentage = float(gUserPoint * (gPointMaxi * 0.01))
member("pourcent").text = string(Pourcentage&&"%")
j'obtiens bien dans le member("pourcent") le chiffre de 25.00 %
J'ai beau recompiler le script 1000 fois , quitter director et relancer le
dir aussi mille fois
tjs le meme probleme, et ce, sur différents pc, cherchez l'erreur :)
du coup j'ai pris la solution N°2 mais suis pas sûr que le résultat soit
exact lors
d'une réouverture du DIR dans 20 ans, d'ici là DIRECTOR s'appelera
FOCALCULATOR ;)
j'ai fait un test sur une machine à calculer et j'obtiens bien 25 % avec les
2 formules
autant faire Pourcentage = gUserPoint :) enfin bref
Happy day scripter
Twinky
Dans un tableau récapitulatif d'un jeu, je calcule le pourcentage de
réussite du niveau terminé
1 )-
soit :
-- Exemple pour :
-- gUserPoint = 25
-- gPointMaxi = 100
gPointMaxi = 100
Pourcentage = float(gUserPoint / gPointMaxi) * 100
member("pourcent").text = string(Pourcentage&&"%")
on obtient ainsi le %, mais director ne veut rien savoir et affiche 0,00 %
<== oops ?????
de plus je n'ai pas d'erreur de script, ni un msg d'erreur de division par
zéro, donc je suis en pleine interrogation
à savoir < >BUG ou division par zéro ????? < >
2 )-
alors qu'en faisant ceci :
Pourcentage = float(gUserPoint * (gPointMaxi * 0.01))
member("pourcent").text = string(Pourcentage&&"%")
j'obtiens bien dans le member("pourcent") le chiffre de 25.00 %
J'ai beau recompiler le script 1000 fois , quitter director et relancer le
dir aussi mille fois
tjs le meme probleme, et ce, sur différents pc, cherchez l'erreur :)
du coup j'ai pris la solution N°2 mais suis pas sûr que le résultat soit
exact lors
d'une réouverture du DIR dans 20 ans, d'ici là DIRECTOR s'appelera
FOCALCULATOR ;)
j'ai fait un test sur une machine à calculer et j'obtiens bien 25 % avec les
2 formules
autant faire Pourcentage = gUserPoint :) enfin bref
Happy day scripter
Twinky

Poser une question


| Hello
|
| Dans un tableau récapitulatif d'un jeu, je calcule le pourcentage de
| réussite du niveau terminé
|
| 1 )----------------------
| soit :
| -- Exemple pour :
| -- gUserPoint = 25
| -- gPointMaxi = 100
|
| gPointMaxi = 100
| Pourcentage = float(gUserPoint / gPointMaxi) * 100
| member("pourcent").text = string(Pourcentage&&"%")
|
| on obtient ainsi le %, mais director ne veut rien savoir et affiche
| 0,00 % <== oops ?????
|
c'est tout à fait normal :
tu définis gUserPoint et gPointMaxi comme des entiers (implicitement) donc
dans ta ligne :
Pourcentage = float(gUserPoint / gPointMaxi) * 100
Director exécute d'abord le contenu de la parenthèse :
gUserPoint / gPointMaxi -- division d'entiers = divisien entière !!!
=> 0
ensuite float(0) => 0.00
Pour éviter ça, le plus simple est de faire :
Pourcentage = ( float(gUserPoint) / float(gPointMaxi) ) * 100
ou encore :
Pourcentage = ( (gUserPoint + 0.0 ) / (gPointMaxi + 0.0) ) * 100
en ajoutant un float à un entier, tu transtype celui-ci en entier :o)
--
------------------
Ned
----------------------------------------
Bien faire et laisser braire
----------------------------------------
Il suffit d'un seul float()
(float(gUserPoint) / gPointMaxi ) * 100
Si lors d'une opération, l'un des membres est float, alors director
considère que tous doivent être float.
J'entends par opération, un unique calcul (un / ou un *, mais pas une suite
complète)
--
Bubar
faut que je potasse, une erreur comme celle-ci BOOOOOOO
Twinky ouvre son bouquin à la page introduction " Qu'est que Lingo Script "
:)
Twinky
(float(gUserPoint) / gPointMaxi ) * 100
Merci pour cette autre soluce :)
Twinky