gpt4 book ai didi

sql-server - SQL Server float 据类型

转载 作者:行者123 更新时间:2023-12-01 23:11:30 25 4
gpt4 key购买 nike

SQL Server Float 的文档说

Approximate-number data types for use with floating point numeric data. Floating point data is approximate; therefore, not all values in the data type range can be represented exactly.

这正是我所期望的。如果是这种情况,为什么以下在 SQL Server 中返回"is"(意外)

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";
}
}

最佳答案

这可能是由不同的舍入策略、应用操作数的顺序、存储中间结果的方式等等造成的。见 What Every Computer Scientist Should Know About Floating-Point Arithmetic详情。如果您不确定自己在做什么,则应避免在 float 计算中进行相等比较。

关于sql-server - SQL Server float 据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2938528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com