moktin
Messages postés8Date d'inscriptionjeudi 12 août 2004StatutMembreDernière intervention 5 octobre 2004
-
5 oct. 2004 à 15:13
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 2013
-
5 oct. 2004 à 16:12
Bjr !
Je viens d'avoir à faire a un cas bizarre.
Bon je raconte mon point de vue, avant.
Si je vais à la boulangerie et qu'elle a seulement 0.99 * un gateau et que moi je lui demande un gateau entier, si elle est honnette, elle me dira je n'ai pas 1 gateau entier.
Or VB me dit :
Dim nb1 as integer
Dim nb2 as integer
Dim res as integer
nb1 = 65280
nb2 = 65536
res = nb1/nb2
?res
> 1
Bon j'ai bien compris sont raisonnement, le résultat est égal a 0.996... et moi j'ai un entier, donc il arrondie tout seul a la supérieur, mais ca me parait qd meme pas bien normal.
Du coup connaissez vous une fonction qui me donne une division correcte me renvoyant 0 ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 5 oct. 2004 à 15:26
Salut moktin
Oui, c'est normal (à l'erreur près qu'un Integer ne peut accueillir que des valeurs comprises entre -32768 et +32767)
Il faut bien faire attention au type de variable que tu utilises. Integer fera tout seul l'arrondi.
Si tu veux récupérer 0 pour 0.99, il te suffit de déclarer la variable 'res' en Single ou Double pour obtenir le vrai résultat, et ensuite seulement, tu pourras récupérer le 0 en faisant :
Res = Fix(Res)
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 5 oct. 2004 à 16:12
ou bien res = nb1 \ nb2 (division entière)
mais comme te l'a écrit jack, si tu veux travailler avec l'entier nb1 tel que
nb1 > 32767 ou nb1 < -32768, il faut déclarer
Dim nb1 As Long