Округление чисел

C#:
Округление чисел

Как это сделать:

Вот кругосветное путешествие по округлению чисел в C#:

using System;

public class RoundingExamples
{
    public static void Main()
    {
        double originalNumber = 123.4567;

        // Округление до ближайшего целого числа
        double rounded = Math.Round(originalNumber);
        Console.WriteLine(rounded); // Вывод: 123

        // Указываем количество десятичных знаков
        double roundedTwoDecimalPlaces = Math.Round(originalNumber, 2);
        Console.WriteLine(roundedTwoDecimalPlaces); // Вывод: 123.46

        // Округление в большую сторону независимо от следующей цифры
        double roundedUp = Math.Ceiling(originalNumber);
        Console.WriteLine(roundedUp); // Вывод: 124

        // Округление в меньшую сторону независимо от следующей цифры
        double roundedDown = Math.Floor(originalNumber);
        Console.WriteLine(roundedDown); // Вывод: 123
    }
}

Глубокое погружение

В старые времена округление было очевидным способом сокращения вычислительных затрат. Каждый цикл имел значение, и урезание чисел экономило драгоценное время. Дошли до современного C#, и речь идет о управлении печально известной предрасположенностью double и decimal к ошибкам точности и отображения.

Помимо Math.Round, Math.Floor и Math.Ceiling, перечисление MidpointRounding позволяет нам решать судьбу несчастных, сидящих посередине цифр — это перекресток между банковскими правилами и справедливостью игровой площадки “округлить к половине вверх”.

Для более требовательных задач, например, в серьезных математических или финансовых приложениях, мы выбираем decimal вместо double, сокращая драму округления за счет более высокой точности — меньше округлений, меньше проблем.

См. также