【发布时间】:2010-05-30 12:07:13
【问题描述】:
SQL Server Float 的文档说
使用的近似数数据类型 带有浮点数值数据。 浮点数据是近似的; 因此,并非数据中的所有值 类型范围可以精确表示。
这正是我所期望的。如果是这种情况,为什么以下在 SQL Server 中返回“是”(意外)
DECLARE @D float
DECLARE @E float
set @D = 0.1
set @E = 0.5
IF ((@D + @D + @D + @D +@D) = @E)
BEGIN
PRINT 'YES'
END
ELSE
BEGIN
PRINT 'NO'
END
但等效的 C++ 程序返回“No”(预期为 0.1 不能准确表示,但 0.5 可以)
#include <iostream>
using namespace std;
int main()
{
float d = 0.1F;
float e = 0.5F;
if((d+d+d+d+d) == e)
{
cout << "Yes";
}
else
{
cout << "No";
}
}
【问题讨论】: