2026-06-09 / C# / .NET Core

C# double、decimal 与业务精度选择

解释二进制浮点为什么会有精度误差,以及金额、折扣、统计场景应该如何选择数值类型。

C#.NET

C# double、decimal 与业务精度选择

double 采用二进制浮点表示,适合科学计算和近似值,但不是所有十进制小数都能被二进制精确表示。

csharp
double a = 0.1 + 0.2;
Console.WriteLine(a == 0.3); // False

decimal price = 0.1m + 0.2m;
Console.WriteLine(price == 0.3m); // True

怎么选

  • 金额、折扣、税率:优先 decimal
  • 图形、物理仿真、统计近似:通常使用 double
  • 需要精确等于的业务判断,不要直接依赖浮点比较。
C# double、decimal 与业务精度选择 | Remi Resume