为什么这两个双打的简单计算不准确?

可能重复:
C#(4):double减去double给出精度问题

86.25 – 86.24 = 0.01

一般来说,我认为上述陈述是对的吗?

但是,如果我输入此内容

double a = 86.24; double b = 86.25; double c = b - a; 

我发现c = 0.010000000000005116

为什么是这样?

浮点数(在这种情况下为双精度数)不能完全表示十进制值。 我建议阅读David Goldberg的每个计算机科学家应该知道的关于浮点运算的内容

这适用于处理浮点数的所有语言,无论是C#,Java,JavaScript,……这对于任何使用浮点运算的开发人员来说都是必不可少的。

正如VinayC建议的那样,如果你需要一个精确(和较慢)的表示,请使用System.Decimal (在C#中也称为decimal )。

Double是十进制计算的错误数据类型,为此使用Decimal。 主要原因在于如何双重存储数字 – 它本质上是十进制数的二进制近似值。