Округление числа с плавающей запятой до n знаков после запятой

  • Михаил
  • 8 мин. на прочтение
  • 155
  • 02 Sep 2023
  • 02 Sep 2023

В этом посте будем обсуждать, как округлить число с плавающей запятой до n знаков после запятой в C#.

Использование Decimal.Round() метод

Другим распространенным подходом является использование Decimal.Round() метод округления значения до указанного количества десятичных разрядов. Преимущество использования этого метода заключается в том, что он сохраняет значение как Decimal, вместо того, чтобы возвращать строку. Следующий пример иллюстрирует.

public class Example
{
    public static void Main()
    {
        decimal d = 3.14285m;
        d = Decimal.Round(d, 2);
        Console.WriteLine(d);            // 3.14
    }
}


Вы также можете указать стратегию округления десятичного числа, используя MidpointRounding перечисление. Например, в следующем коде используется соглашение об округлении MidpointRounding.AwayFromZero.

public class Example
{
    public static void Main()
    {
        decimal d1 = 3.505m;
        d1 = Decimal.Round(d1, 2);
        Console.WriteLine(d1);            // 3.50
        decimal d2 = 3.505m;
        d2 = Decimal.Round(d2, 2, MidpointRounding.AwayFromZero);
        Console.WriteLine(d2);            // 3.51
    }
}


The Math класс также предоставляет Round() метод округления значения до указанного количества дробных цифр. В следующем примере представлены выходные данные с различными входными данными:

public class Example
{
    public static void Main()
    {
        float f1 = 3.14285f;
        double d1 = Math.Round(f1, 2);
        Console.WriteLine(d1);            // 3.14
        float f2 = 3.1000f;
        double d2 = Math.Round(f2, 2);
        Console.WriteLine(d2);            // 3.1
        float f3 = 3.0000f;
        double d3 = Math.Round(f3, 2);
        Console.WriteLine(d3);            // 3
    }
}

 

Использование ToString() метод

Мы можем использовать ToString() метод для форматирования значения с плавающей запятой до нескольких знаков после запятой. ToString() Метод принимает строку числового формата и преобразует текущее значение экземпляра в эквивалентную строку. Чтобы ограничить число с плавающей запятой до 2 знаков после запятой, вы можете использовать #.## спецификатор формата, как показано ниже:

public class Example
{
    public static void Main()
    {
        float f = 3.14285f;
        string s = f.ToString("#.##");
        Console.WriteLine(s);            // 3.14
    }
}


C# предлагает несколько спецификаторов стандартного формата, которые можно использовать для округления значения с плавающей запятой до 2 знаков после запятой. Они обсуждаются ниже:

Спецификатор пользовательского формата «0».

public class Example
{
    public static void Main()
    {
        float f = 3.14285f;
        string s = f.ToString("0.00");
        Console.WriteLine(s);            // 3.14
    }
}

 

Спецификатор формата фиксированной точки (F)
 

public class Example
{
    public static void Main()
    {
        float f = 3.14285f;
        string s = f.ToString("F2");
        Console.WriteLine(s);            // 3.14
    }
}

 

Спецификатор числового формата (N) с разделителями групп

public class Example
{
    public static void Main()
    {
        float f1 = 3.14285f;
        Console.WriteLine(f1.ToString("N2"));        // 3.14
        float f2 = 10000.874287f;
        Console.WriteLine(f2.ToString("N2"));        // 10,000.87
    }
}

 

Использование String.Format() метод

Подобно ToString() метод, вы можете использовать String.Format() метод округления значения с плавающей запятой до 2 знаков после запятой. Следующий пример иллюстрирует использование #.## спецификатор формата, 0 спецификатор пользовательского формата, спецификатор формата с фиксированной точкой (F)и спецификатор числового формата (N).

public class Example
{
    public static void Main()
    {
        float f = 3.14285f;
        string s = String.Format("{0:0.00}", f);
        Console.WriteLine(s);            // 3.14
        s = String.Format("{0:#.##}", f);
        Console.WriteLine(s);            // 3.14
        s = String.Format("{0:F2}", f);
        Console.WriteLine(s);            // 3.14
        s = String.Format("{0:N2}", f);
        Console.WriteLine(s);            // 3.14
    }
}

 

Вот и все, что касается округления числа с плавающей запятой до 2 знаков после запятой в C#.