我的项目中有一些代码比较了两个双精度值,看它们的差值是否超过 0,例如:
if (totValue != 1.0)
Resharper 对此提出了抱怨,建议我应该使用“EPSILON”并在代码中添加这样一个常量(当被邀请时)。但是,它不会创建常量本身或建议它应该是什么值。这是一个很好的解决方案:
const double EPSILON = double.Epsilon; // see http://msdn.microsoft.com/en-us/library/system.double.epsilon.aspx
. . .
if (Math.Abs(totValue - 1.0) > EPSILON)
compValue = Convert.ToString(totValue*Convert.ToDouble(compValue));
?
更新
我把它改成这样:
const double EPSILON = 0.001;
...认为这可能既大又小,足以适用于典型的双 vals(不是科学的东西,只是“我有 2.5 个”等)