2008-08-21 7 views

Répondre

32

La fonction Int renvoie la partie entière d'un nombre spécifié.

La fonction CInt convertit une expression de type Integer.

Et la meilleure réponse vient de MSDN

CInt diffère de Fix et fonctions Int, qui tronquent, plutôt que ronde, la partie décimale d'un nombre. Lorsque la partie fractionnaire est exactement égale à 0,5, la fonction CInt l'arrondit toujours au nombre pair le plus proche. Par exemple, 0,5 arrondit à 0 et 1,5 arrondit à 2.

16

Et, la différence la plus importante (IME, au moins) .... est que CInt overflows at 32,767.

+0

Merci beaucoup pour le rappel que int est un entier signé 16 BIT! –

3

Voici une autre différence:

Script:

wscript.echo 40.91 * 100 
wscript.echo Int(40.91 * 100) 
wscript.echo CInt(40.91 * 100) 

Résultat:

4091 
4090 (????) 
4091 

Toute pensée?

+1

Arrondi à virgule flottante. La valeur réelle de "40.91" dans le code est extrêmement proche de, mais juste inférieure à la valeur décimale théorique. CInt arrondit au plus proche, Int tronque. –

3

La réponse habituelle à ce problème consiste à forcer manuellement un arrondi. Ce problème est aussi vieux que FORTRAN.

Au lieu de

a = int(40.91 * 100) 

Utilisez

b = 40.91 * 100 
a = int(b + 0.5) 

Trick ancienne, toujours utile dans des feuilles de calcul Excel de temps en temps.