Разница между decimal и double в C#

decimal и double — это числовые типы данных в C#, используемые для работы с вещественными числами. Они имеют разную точность и область применения.

Основные отличия

ТипДиапазон значенийТочностьРазмер.NET-тип
doubleот ±5,0 × 10⁻³²⁴ до ±1,7 × 10³⁰⁸15–17 цифр8 байтSystem.Double
decimalот ±1,0 × 10⁻²⁸ до ±7,9228 × 10²⁸28–29 знаков16 байтSystem.Decimal

Использование decimal

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

Пример:

using System;

class Program
{
    static void Main()
    {
        decimal price = 10.99m;
        decimal total = price * 3;
        Console.WriteLine(total); // 32.97
    }
}

Использование double

Тип double предпочтителен для научных вычислений, работы с графикой и физическими моделями.

Пример:

using System;

class Program
{
    static void Main()
    {
        double value = 10.99;
        double result = value * 3;
        Console.WriteLine(result); // 32.97 (возможны неточности из-за хранения в двоичной системе)
    }
}

Когда использовать decimal или double

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