asp.net中的双重比较失败
这行代码:asp.net中的双重比较失败,asp.net,compare,double,Asp.net,Compare,Double,这行代码: Response.Write("isEqual check:" + (val1 = val2).ToString + "[" + val1.ToString + ":" + val2.ToString + "]") 具体输出如下: 等质量检查:假[5998,88:5998,88] 正如你所看到的,它们是完全相同的(但表面上不是吗?) 注意:val1是数学计算的结果,val2来自如下数据库字段: Dim val2 as Double = CDbl(datarow("amount"))
Response.Write("isEqual check:" + (val1 = val2).ToString + "[" + val1.ToString + ":" + val2.ToString + "]")
具体输出如下:
等质量检查:假[5998,88:5998,88]
正如你所看到的,它们是完全相同的(但表面上不是吗?)
注意:val1是数学计算的结果,val2来自如下数据库字段:
Dim val2 as Double = CDbl(datarow("amount"))
嗯,我注意到这是一个.NET的东西。我们不能像那样直接比较两种类型。我需要编写一个哑函数来检查它们是否在公差级别上是相同的。以下是我所做的:
Function isEqual(v1 as Double, v2 as Double, Optional tolerance as Double = 0.0001) as Boolean
Return Math.Abs(v1 - v2) < tolerance
End Function
函数isEqual(v1为双精度,v2为双精度,可选公差为双精度=0.0001)为布尔值
返回数学绝对值(v1-v2)<公差
端函数
您确定val1是双精度的吗?是的,因为在VB.NET中,所有数学计算都返回双精度类型。x1*x2只能是双精度。此外,我首先把它定义为双精度。