J'ai une application de base visuelle qui doit arrondir un nombre, par exemple, 2.556 deviendrait 2,55 et non 2,26.
Je peux le faire en utilisant une fonction pour éliminer les caractères plus que 2 à partir de la décimale. Point en utilisant ceci: p> existe une meilleure fonction de faire cela? p> p>
5 Réponses :
Vous pouvez le faire avec math.floor . Cependant, vous devrez multiplier * 100 et diviser, car vous ne pouvez pas fournir un nombre de chiffres
Parfois, il est avantageux de stocker vos numéros comme entiers ou point fixe (si vous n'avez pas besoin de la gamme complète de point flottant), effectuez des calculs sur les numéros de point fixe, puis réglez-les lors de l'affichage à l'utilisateur.
@Justin: bon point - j'ai édité de rendre compte des nombres négatifs, ainsi que positif
Comme il s'agit de VB, utilisez simplement un type de données de devises.
Une autre façon de le faire qui ne repose pas sur l'utilisation du type de chaîne:
L'utilisation d'un correctif () sera légèrement plus rapide que l'utilisation de sol ().
Avez-vous quelque chose qui soutient cette déclaration?
@Justin: Correction est réellement plus lente que Math.Floor - il fait un chèque, puis appelle math.floor en interne. Exécutez le réflecteur sur Microsoft.VisualBasic.dll pour plus de détails.
Oups je l'ai dit à l'envers. Votre commentaire était ma justification.
La réponse math.floor () est bonne. Je ne sais pas exactement quels environnements VB correctement () sont définis dans. Comme Justin pointe, math.floor () ne fonctionnera pas avec des nombres négatifs. Vous devriez prendre la valeur absolue, puis multiplier par le SGN () du nombre. Je ne connais pas le nom exact de la fonction que vous utiliseriez pour obtenir le signe (non péché ()) du nombre.
en pseudo-code, en tenant compte des valeurs négatives, le résultat ressemblerait à: p> -
Vaches à fourrure moo et décompressez. P> p>
Je suis habitué à la fonction Fix () de VB6, mais il est disponible dans VB.net également - msdn.microsoft.com/en-us/library/...
@WyrDestGeek: La fonction est MATH.SIGN. @Saul: Correction des appels Math.Floor en interne.
Quelle est cette entreprise sur le décompression des bovins?
Pour arrondi
number.Substring(0,1)
Dim Input As Decimal Dim Output As Decimal Input = 2.556 Output = Input - (Input Mod 0.01) This will work with both positive and negative numbers