如何用C#解释8.2-8 = 0.19999999999

sma*_*pig 0 c#

码:

Console.WriteLine(8.3-8);
Console.WriteLine(8.2-8);
Console.WriteLine(7.2-7);
Run Code Online (Sandbox Code Playgroud)

上面的代码将输出:

0.300000000000001
0.199999999999999
0.2
Run Code Online (Sandbox Code Playgroud)

fub*_*ubo 5

那是双舍入问题.所以充满了它.尝试使用Decimal

Console.WriteLine((decimal)8.3 - 8);
Console.WriteLine((decimal)8.2 - 8);
Console.WriteLine((decimal)7.2 - 7);
Run Code Online (Sandbox Code Playgroud)

  • 而不是`(十进制)8.3`你可以使用`8.3m`来缩短表示法. (2认同)