相关疑难解决方法(0)

为什么C#中的浮点运算不精确?

为什么以下程序会打印出打印的内容?

class Program
{
    static void Main(string[] args)
    {
        float f1 = 0.09f*100f;
        float f2 = 0.09f*99.999999f;

        Console.WriteLine(f1 > f2);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是

false
Run Code Online (Sandbox Code Playgroud)

c# floating-point

13
推荐指数
3
解决办法
2万
查看次数

加法的十进制顺序会影响结果

我有一个使用小数执行大量计算的系统,偶尔会添加相同的数字,但返回不同的结果,+/ - 0.000000000000000000000000001

这是一个简短的例子:

decimal a = 2.016879990455473621256359079m;
decimal b = 0.8401819425625631128956517177m;
decimal c = 0.4507062854741283043456903406m;
decimal d = 6.7922317815078349615022988627m;

decimal result1 = a + b + c + d;
decimal result2 = a + d + c + b;

Console.WriteLine((result1 == result2) ? "Same" : "DIFFERENT");
Console.WriteLine(result1);
Console.WriteLine(result2);
Run Code Online (Sandbox Code Playgroud)

那输出:

DIFFERENT
10.100000000000000000000000000
10.100000000000000000000000001
Run Code Online (Sandbox Code Playgroud)

差异很小,没有实际效果,但有人见过这样的事情吗?我期望在添加相同的数字时,您将始终获得相同的结果.

c# math decimal

5
推荐指数
1
解决办法
567
查看次数

标签 统计

c# ×2

decimal ×1

floating-point ×1

math ×1