C#:
Zaokrąglanie liczb
Jak to zrobić:
Oto bilet w obie strony na zaokrąglanie liczb w C#:
using System;
public class RoundingExamples
{
public static void Main()
{
double originalNumber = 123.4567;
// Zaokrąglij do najbliższej liczby całkowitej
double rounded = Math.Round(originalNumber);
Console.WriteLine(rounded); // Wynik: 123
// Określ liczbę miejsc po przecinku
double roundedTwoDecimalPlaces = Math.Round(originalNumber, 2);
Console.WriteLine(roundedTwoDecimalPlaces); // Wynik: 123.46
// Zaokrąglij w górę niezależnie od następnej cyfry
double roundedUp = Math.Ceiling(originalNumber);
Console.WriteLine(roundedUp); // Wynik: 124
// Zaokrąglij w dół niezależnie od następnej cyfry
double roundedDown = Math.Floor(originalNumber);
Console.WriteLine(roundedDown); // Wynik: 123
}
}
Szczegółowe omówienie
Kiedyś zaokrąglanie było oczywistym sposobem na zmniejszenie kosztów obliczeniowych. Każdy cykl się liczył, a przycinanie liczb oszczędzało cenny czas. Przeskakując do nowoczesnego C#, chodzi o zarządzanie notoryczną skłonnością typów double i decimal do błędów precyzji i dziwactw wyświetlania.
Poza Math.Round
, Math.Floor
i Math.Ceiling
, wyliczenie MidpointRounding
pozwala nam decydować o losie biednych, siedzących na środku cyfr – to rozdroże między regułami bankowymi a uczciwością placu zabaw “zaokrąglaj połowy w górę”.
Dla trudniejszych przypadków, jak poważne aplikacje matematyczne czy finansowe, mamy decimal
zamiast double
, redukując dramat zaokrąglania poprzez oferowanie wyższej precyzji – mniej zaokrągleń, mniej problemów.