在.net中加倍

2 .net floating-point precision

如果我有以下代码(这是用.NET编写的)

double i = 0.1 + 0.1 + 0.1;
Run Code Online (Sandbox Code Playgroud)

为什么不i相等0.3
有任何想法吗?

pax*_*blo 6

您需要阅读浮点数.许多十进制数字没有二进制的精确表示,因此它们不是完全匹配.

这就是为什么在比较中,你倾向于看到:

if (abs(a-b) < epsilon) { ...
Run Code Online (Sandbox Code Playgroud)

其中epsilon是一个很小的值,如0.00000001,具体取决于所需的精度.