Sql server 比较sqlserver中的2个浮点值
我在2Sql server 比较sqlserver中的2个浮点值,sql-server,Sql Server,我在2tables-table1和table2中有一个floatvariable-field1。当我查询表并检查字段的值时,它们看起来都相同,但当我发现它们的差异时,它给出的是一个差异而不是零 Field1(Table1) value---84.4660194174757 Field2(Table2) value---84.4660194174757 Differnce---1.4210854715202E-14 为什么我会遇到这个问题? 用于限制小数位数 使用带有一些合适值的ABS(val
tables-table1
和table2
中有一个floatvariable-field1
。当我查询表并检查字段的值时,它们看起来都相同,但当我发现它们的差异时,它给出的是一个差异而不是零
Field1(Table1) value---84.4660194174757
Field2(Table2) value---84.4660194174757
Differnce---1.4210854715202E-14
为什么我会遇到这个问题?- 用于限制小数位数
- 使用带有一些合适值的
ABS(value1-value2)<0.00001
- 不要使用浮动
FLOAT
而不是DECIMAL
?数据是从电子表格导出的,sqlserver会用FLOAT自动检测数据。FLOAT
是一种近似的数据类型,所以这种差异是可以预料的。你是这个网站的创始人之一吗?我问是因为你的代表太高了!值得注意的是,float
的Round
返回一个float
,因此结果仍然是近似的数字类型。另一种选择是cast
或convert
转换为精确的数字类型,例如用于计算。在任何情况下,用户都需要知道表示问题域中的值所需的精度和范围。