Quelle est la méthode recommandée pour convertir un type à virgule flottante en type entier, tout tronquer après le point décimal? Clng tours, apparemment, et la documentation pour l'opérateur = ne mentionne pas le sujet.Comment convertir un type à virgule flottante en un type entier sans arrondir dans VB6
Répondre
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.
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.
Voir [ici] (http://stackoverflow.com/questions/137114/how-to-round-in-ms-access-vba/137177#137177) pour plus d'informations. –
@Lance Roberts, est-ce que cela s'applique aussi à VB6, ou seulement à VBA? – Beth
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. –
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)
est3
, etFix(-3.5)
est-3
. La fonctionInt()
arrondit à l'entier le plus haut inférieur à la valeur . Les deuxInt()
etFix()
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
Voir [ici] (http://stackoverflow.com/questions/137114/how-to-round-in-ms-access-vba/137177#137177) que Fix a un bug. –
@Lance Roberts: Merci pour votre note. Il arrive que j'ai choisi Int. Phew! –
- 1. Convertir une variable à virgule flottante en entier?
- 2. Comment arrondir à une certaine précision en virgule flottante?
- 3. Le type de données 'MONEY' de SQL Server est-il un virgule flottante décimale ou un virgule flottante binaire?
- 4. Valeurs Flash à virgule flottante et à virgule flottante
- 5. Décimale à virgule flottante
- 6. C# Conversion d'une chaîne contenant un nombre à virgule flottante en entier
- 7. opérations à virgule flottante
- 8. Comment convertir un objet en type décrit par Type classe?
- 9. Comment convertir un entier en float en JavaScript?
- 10. Comment convertir un type en générique?
- 11. Comment puis-je convertir une chaîne à virgule flottante en un int en C#
- 12. Comment convertir un type anynoymous?
- 13. Division à virgule flottante dans un fichier batch
- 14. Excel Virgule flottante Arihmetic - Quel type utilise-t-elle actuellement?
- 15. Convertir un flottant en équivalent entier
- 16. précision à virgule flottante
- 17. Comment convertir un virgule flottante en hexadécimal (et retour) dans Delphi
- 18. Arrondir des nombres à virgule flottante en C++ à une décimale
- 19. Détection d'arrondi à virgule flottante
- 20. en virgule flottante Limitations
- 21. C# - convertir un type anonyme en observablecollection
- 22. Formatage à virgule flottante dans printf()
- 23. Éviter l'arithmétique en virgule flottante
- 24. Convertir/Quantifier la plage flottante en entier Nombre
- 25. Virgule flottante en forme hexadécimale
- 26. Comment convertir un objet Flex en un type dérivé?
- 27. Pourquoi l'échange d'octets à virgule flottante est-il différent de l'échange d'octets sur un nombre entier?
- 28. Imprimer le nombre à virgule flottante arrondi dans MIPS
- 29. comparaison à virgule flottante en STL, BOOST
- 30. VB6 Runtime Type Retrieval
vous devriez regarder le lien que j'ai donné la réponse acceptée. Correction a un bug dedans. –