Division.

moktin Messages postés 8 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 5 octobre 2004 - 5 oct. 2004 à 15:13
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 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 ?

Merci d'avance.

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)

Vala
Jack
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
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
0
Rejoignez-nous