c# - 为什么这个简单的两个 double 计算不准确?

标签 c# double precision

<分区>

Possible Duplicate:
C# (4): double minus double giving precision problems

86.25 - 86.24 = 0.01

一般来说,我会认为上面的说法是正确的,对吧?

但是,如果我输入这个

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

我发现 c = 0.010000000000005116

这是为什么?

最佳答案

float (在本例中为 double )不能精确表示十进制值。我会推荐阅读 David Goldberg 的 What every computer scientist should know about floating-point arithmetic

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

正如 VinayC 所建议的那样,如果您需要精确(且速度较慢)的表示,请改用 System.Decimal(在 C# 中又称为 decimal)。

关于c# - 为什么这个简单的两个 double 计算不准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4252917/

相关文章:

c# - 如何验证 SalesForce Consumer Key 和 Consumer Secret

java - 如何将 double 变量四舍五入到小数点后两位?

string - 在 Haskell 中,如何获得 0.03 而不是 3.0e-2?

java - 读取 GUI 文本字段上的 double /浮点值

c++ long double 精确打印所有数字

java - 如何精确地将毫秒转换为秒

ruby - 在 Ruby 的 BigDecimal 中是否使用 String 或 Integer

c# - 如何在 ASP.NET Core 中设置 Automapper

c# - 在 C# 中创建远程 PowerShell session ?

c# - 用户界面设计工具