Existe-t-il un moyen d’arrondir la valeur décimale à la valeur 0,05 la plus proche en .Net?
Ex:
7.125 -> 7.15
6.66 -> 6.7
Si sa maintenant disponible peut quelqu’un me fournir l’algo?
Que diriez-vous:
Math.Ceiling(myValue * 20) / 20
Utilisez ceci:
Math.Round(mydecimal / 0.05m, 0) * 0.05m;
La même logique peut être utilisée dans T-SQL:
ROUND(@mydecimal / 0.05, 0) * 0.05
Je préfère cette approche à la réponse choisie simplement parce que vous pouvez voir directement la précision utilisée.
Quelque chose comme ça devrait marcher pour n’importe quelle étape, pas seulement 0.05:
private decimal RoundUp (decimal value, decimal step) { var multiplicand = Math.Ceiling (value / step); return step * multiplicand; }
Math .. ::. Round, méthode (Decimal, Int32, MidpointRounding)
Arrondit une valeur à virgule flottante en double précision au nombre spécifié de chiffres fractionnaires. Un paramètre spécifie comment arrondir la valeur si elle est à mi-chemin entre deux autres nombres.
Math.Round(1.489,2,MidpointRounding.AwayFromZero)
Dupliqué ici et ici pour rbuy et python. Ça ne devrait pas être trop différent.