Помощ при закръгляне
Здравейте!
Поразовичках се тук там, но така и не открих това, което ми трябва. Искам да закръгля например 83,33333 на 83,4..някой да има предложение как това може да се случи?
Здравейте!
Поразовичках се тук там, но така и не открих това, което ми трябва. Искам да закръгля например 83,33333 на 83,4..някой да има предложение как това може да се случи?
Това си е изобретено:
public static double CeilingAfterPoint(double number, int digitsAfterPoint)
{
return Math.Ceiling(number * Math.Pow(10, digitsAfterPoint))
/ Math.Pow(10, digitsAfterPoint);
}
http://stackoverflow.com/questions/13194239/c-sharp-decimal-take-ceiling-2
Синтаксиса е следния
Math.Round(x, y) , къдетo Х е стойността или променливата, а Y e броя на цифри след десетичната запетая. В твоя случай примерно
Math.Round(number, 1)
Не си разбрал какъв точно е проблема, на който търся решението. Не искам да 83,333333 да ми го закръгли на 83,3..а към по голямото, тоест 83,4 :)
Адаш, той иска да изобрети нов тип закръгление, по-малко от 5 да го отпечатва към следващото - 83.33 да стане 83.4.
Ясно, моя грешка, не съм прочел :) Добре, че колежката е разбрала и е дала правилния отговор :)
Разръчкай и ей това - MidpointRounding - , сматам че е интересен случай
https://msdn.microsoft.com/en-us/library/system.midpointrounding%28v=vs.110%29.aspx
, като 3ти параметър на Math.Round() - би трябвало да ти свърши работата.
edit: сега го видях, че е за случая при .5 само :)
Не върши работа в този случай:
Console.WriteLine(Math.Round(83.33333, 1, MidpointRounding.AwayFromZero));
Console.WriteLine(Math.Round(83.33333, 1, MidpointRounding.ToEven));
печата това:
83.3
83.3
Да, моя грешка, че не го до изчетох докрай - помага само с случая, при който имаме петици след десетичната 83.335
MidpointRounding.AwayFromZero -> 83.34
MidpointRound.ToEven -> 83.33
Благодаря :)