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只能是双精度。此外,我首先把它定义为双精度。