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
— для высокопроизводительных вычислений, научных расчетов, работы с графикой и физикой.