比较sqlserver中的2个浮点值

use*_*619 13 sql-server

variable-field1在2 tables-table1&中有一个浮动table2.当我查询表格并检查字段的值时,两者看起来都相同,但是当我发现它们的差异时,它会产生差异而不是零.

Field1(Table1) value---84.4660194174757
Field2(Table2) value---84.4660194174757

Differnce---1.4210854715202E-14
Run Code Online (Sandbox Code Playgroud)

为什么我会遇到这个问题?

gbn*_*gbn 22

  • 使用ROUND限制小数
  • 使用ABS(value1-value2) < 0.00001一些合适的价值
  • 不要使用浮动

  • 值得注意的是,`float` 的`Round` 返回一个`float`,因此结果仍然是近似数值类型。另一种选择是将`cast` 或`convert` 转换为精确的数字类型,例如[decimal](https://docs.microsoft.com/en-us/sql/t-sql/data-types/decimal-and- numeric-transact-sql?view=sql-server-2017),用于计算。在任何情况下,用户都需要了解在其问题域中表示值所需的 _precision_ 和 _scale_。 (2认同)