Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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查询将0显示为1.36424205265939E-12_Sql_Sql Server_Floating Point_Ssms_Floating Accuracy - Fatal编程技术网

SQL查询将0显示为1.36424205265939E-12

SQL查询将0显示为1.36424205265939E-12,sql,sql-server,floating-point,ssms,floating-accuracy,Sql,Sql Server,Floating Point,Ssms,Floating Accuracy,我在select查询中添加了3列,A列+B列+C列。对于大多数列,数学结果都是正确的。但是,答案应为0的某些列显示为1.36424205265939E-12或类似的内容 我的数学是0+1414+-1414。答案应该是0,但我得到的结果是1.36424205265939E-12 我所有的数据类型都是浮点数。B列和C列来自临时表,A列来自常规表。您可以将算术前后的值转换为十进制。例如: select cast(Column A + Column B + Column C as decimal(28,

我在select查询中添加了3列,A列+B列+C列。对于大多数列,数学结果都是正确的。但是,答案应为0的某些列显示为1.36424205265939E-12或类似的内容

我的数学是0+1414+-1414。答案应该是0,但我得到的结果是1.36424205265939E-12


我所有的数据类型都是浮点数。B列和C列来自临时表,A列来自常规表。

您可以将算术前后的值转换为十进制。例如:

select cast(Column A + Column B + Column C as decimal(28, 6))
对于大多数目的来说,这应该足够了


这就是为什么只有在真正需要浮点运算时才应该使用浮点。在大多数情况下,尤其是在商业领域,定点运算更为合适。

欢迎来到浮点数的世界

如果两个浮点数正好相等,那就是一个小奇迹。这是因为浮点运算的数值精度仅在一个称为的公差范围内

因此,从事分子结构科学和天文学的人们可以使用相同的计算系统

当您显示浮点数时,使用它通常很有帮助。比如说,

  SELECT ROUND(0.0 + 1414.0 + -1414.0, 2)
如果您不懂浮点数,请了解它们。如果你想从事编程专业,了解该领域的基本知识是必要的

这让我想起1994年的一个老笑话

英特尔公司刚刚成功推出了新的奔腾系列微处理器,我们大多数人都在2017年使用该系列微处理器。最早的奔腾有。尽管如此,这是一次非常成功的产品发布,为英特尔董事长安德鲁·格罗夫(Andrew Grove)赚了很多钱

安迪·格罗夫走进一家酒吧。他感觉很好,所以他对酒保说,给我一杯你最好的苏格兰威士忌

酒保给他倒了三指27岁的苏格兰威士忌,说:先生,一共20美元


格罗夫把一张20美元的钞票放在吧台上,看了一会儿,说不用找钱。

好吧……你的数据类型是浮动的,所以这是意料之中的。如果你想要一个精确的结果,那么使用精确的datatypes@Lamak-转换为十进制会得到相同的结果。如果您转换每个数字,则不会得到相同的结果:CONVERTDECIMAL16,4,0+……我假设您没有在SQL查询中实际编写表达式0+1414+-1414,您访问的列看起来就像这些值一样,但其中一个或多个具有该分数,最有可能是0。