Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 比较sqlserver中的2个浮点值_Sql Server - Fatal编程技术网

Sql server 比较sqlserver中的2个浮点值

Sql 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

我在2
tables-table1
table2
中有一个float
variable-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
转换为精确的数字类型,例如用于计算。在任何情况下,用户都需要知道表示问题域中的值所需的精度和范围。