【发布时间】:2020-06-28 02:10:40
【问题描述】:
for (int i = 0; i < iMatrix1.Count(); i++)
{
if (Math.Abs(iMatrix1[i]) > 1E-20 & Math.Abs(iMatrix1[i]) < 0.0001) { oArrayList.Add(0); }
else { oArrayList.Add(iMatrix1[i]); }
}
也许只是眼睛疲倦......但我没有得到我的预期结果,在这里。我试图消除给定容差下限之外的错误数字。 (意思是,如果它们超出我试图定义的范围,则需要将它们处理为零)
出于某种原因,它也在更改超出此下限的数字。
我确信这只是一个愚蠢的错误。请纠正我。
iMatrix[i] 的返回值 = -0.000000000000000055
很明显,0.00000000000000000001
再一次,我确信这只是一个愚蠢的疏忽……但现在它正在杀死我。
【问题讨论】:
-
尝试将 & 替换为 &&
-
&& 是条件逻辑。如果我们在评估左手之后仅根据必要性评估右手,那如何解决问题?从逻辑上讲,如果左手不正确,则不会评估右手。如果左手是真的,那仍然不能解释对限制的不正确评估的差异。尽管如此,我确实尝试过,但并没有解决问题......
-
你能发布一个完整的程序及其输出和预期输出吗?
-
@PauloMorgado - 绝对不是。这是专有的。但我已将其范围缩小到确切的问题区域。如果我把它注释掉,只返回数组值,我会得到确切的矩阵值。我的预期输出是我在上面发布的值(在绝对括号中)返回为零。我的问题的哪一部分不清楚。也许我可以更好地解决它。但可以肯定的是,问题不在于我的输入值。我返回未修改的值没有问题。
-
所以没有其他人熟悉这个:effbot.org/pyfaq/…
标签: visual-studio-2013 conditional-statements boolean-expression c#-7.0 boolean-operations