2010-11-04 5 views

Répondre

3

Pour les nombres positifs que vous utilisez

truncated = Int(value) 

Si elle est utilisée sur les nombres négatifs, il descendrait, à savoir -7,2 deviendrait -8.

3

voir this

comportement Undocumented de la fonction CInt() Les tours de fonction CInt() à la plus proche valeur entière. En d'autres termes, CInt (2.4) renvoie 2 et CInt (2.6) renvoie 3.

Cette fonction présente un comportement sous-documenté lorsque la partie fractionnaire est égale à 0,5. Dans ce cas, cette fonction arrondit vers le bas si la partie entière de l'argument est paire, mais arrondit si la partie entière est un nombre impair. Par exemple, CInt (2.5) renvoie 2, mais CInt (3.5) renvoie 4.

Ce comportement ne doit pas être considéré comme un bogue, car il permet de ne pas introduire d'erreurs lors de calculs statistiques. MISE À JOUR: Matthew Wills nous informe que ce comportement est bien documenté dans le fichier d'aide de VB6: Lorsque la partie fractionnaire est exactement égale à 0.5, CInt et CLng l'arrondissent toujours au nombre pair le plus proche. Par exemple, 0,5 arrondit à 0 et 1,5 arrondit à 2. CInt et CLng diffèrent des fonctions Fix et Int, qui tronquent, plutôt que rond, la partie fractionnaire d'un nombre. En outre, Fix et Int renvoient toujours une valeur du même type que celle qui est transmise.

+0

Voir [ici] (http://stackoverflow.com/questions/137114/how-to-round-in-ms-access-vba/137177#137177) pour plus d'informations. –

+0

@Lance Roberts, est-ce que cela s'applique aussi à VB6, ou seulement à VBA? – Beth

+0

Je n'ai pas testé toutes les options de VB6, bien que ce soit une bonne idée. Le concept de l'arrondissement des banquiers est le même. –

9

Utilisez Fix ou Int en fonction du traitement que vous souhaitez pour les nombres négatifs.

L'article Q196652 de Microsoft traite de l'arrondi avec des détails incroyables. Voici un extrait

La fonction VB Fix() est un exemple de troncature. Par exemple, Fix(3.5) est 3, et Fix(-3.5) est -3. La fonction Int() arrondit à l'entier le plus haut inférieur à la valeur . Les deux Int() et Fix() acte de la même façon avec des chiffres positifs - tronquer - mais donner différents résultats pour les nombres négatifs: Int(-3.5) donne -4.

divulgation complète: j'ai parlé this nice answer par elo80ka

+1

Voir [ici] (http://stackoverflow.com/questions/137114/how-to-round-in-ms-access-vba/137177#137177) que Fix a un bug. –

+0

@Lance Roberts: Merci pour votre note. Il arrive que j'ai choisi Int. Phew! –

Questions connexes