Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#双精度减法应=0_C#_Precision - Fatal编程技术网

C#双精度减法应=0

C#双精度减法应=0,c#,precision,C#,Precision,我读过几篇文章,我理解双重算术并不总是能返回你所期望的结果 但我的问题不同,因为我在检查两个数字是否相同,而当我期望为真时,我得到的是假 我也读过这篇文章,但仍然很难理解为什么两个看似相等的双变量显示不相等 更新:下面的答案帮助我理解调试器显示的值并不是“全部”。这就是为什么两个浮动看起来是相等的。当悬停变量时,调试器显示相等的值 对于浮点数,默认字符串格式不精确,应使用“G17” 结果: 5.70833333 5.70833333 5.708333333 5.7083333295 假 10

我读过几篇文章,我理解双重算术并不总是能返回你所期望的结果

但我的问题不同,因为我在检查两个数字是否相同,而当我期望为真时,我得到的是假

我也读过这篇文章,但仍然很难理解为什么两个看似相等的双变量显示不相等

更新:下面的答案帮助我理解调试器显示的值并不是“全部”。这就是为什么两个浮动看起来是相等的。当悬停变量时,调试器显示相等的值


对于浮点数,默认字符串格式不精确,应使用
“G17”

结果:

5.70833333
5.70833333
5.708333333
5.7083333295

100000000010110110101010101010101010101010101010101010101010101010101010101010101
100000000010110110101010101010101010101010101010101010101010110101010101010001

通常要比较两个浮点数,可以使用一个小的错误数

Console.WriteLine(Math.Abs(a - b) < 0.0000001);
Console.WriteLine(Math.Abs(a-b)<0.0000001);

试着改用
十进制
。什么是
itme
?qty1和item.Length都是双倍的。因为它们
看似相等,但实际上并不相等。你的问题是什么?我没看见
Console.WriteLine(Math.Abs(a - b) < 0.0000001);