Czy istnieje sposób na zaokrąglenie wartości dziesiętnych do najbliższej wartości 0,05 w sieci .Net?Jak zaokrąglić wartość dziesiętną do najbliższej wartości 0,05?
Ex:
7,125 -> 7,15
6,66 -> 6,7
Jeśli jej teraz dostępny może ktoś podać mi algo?
Czy istnieje sposób na zaokrąglenie wartości dziesiętnych do najbliższej wartości 0,05 w sieci .Net?Jak zaokrąglić wartość dziesiętną do najbliższej wartości 0,05?
Ex:
7,125 -> 7,15
6,66 -> 6,7
Jeśli jej teraz dostępny może ktoś podać mi algo?
Jak o:
Math.Ceiling(myValue * 20)/20
Math..::.Round Method (Decimal, Int32, MidpointRounding)
Policzone podwójnej precyzji wartości zmiennoprzecinkowych do określonej liczby cyfr ułamkowych. Parametr określa sposób zaokrągleń wartości, jeśli jest w połowie drogi między dwoma innymi liczbami.
Math.Round(1.489,2,MidpointRounding.AwayFromZero)
MidpointRounding.AwayFromZero nie zezwala na Round UP - zobacz http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx –
Użyj tego:
Math.Round(mydecimal/0.05m, 0) * 0.05m;
Ta sama logika może być stosowany w T-SQL:
ROUND(@mydecimal/0.05, 0) * 0.05
wolę takie podejście do selected answer po prostu dlatego, że można bezpośrednio zobaczyć precyzję używany.
Math.Round nie zezwala na zaokrąglanie w górę –
Coś jak to powinno działać na każdym kroku, nie tylko 0,05:
private decimal RoundUp (decimal value, decimal step)
{
var multiplicand = Math.Ceiling (value/step);
return step * multiplicand;
}
Doskonała ... Dzięki –
predator4: To wydaje się być to, co PO chce, z '6,66 -> 6.7' przykład. – caf
@ predator4: Jest poprawny w moim scenariuszu (obliczenie podatku) –