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.

Zobacz także