SQL查询将0显示为1.36424205265939E-12
我在select查询中添加了3列,A列+B列+C列。对于大多数列,数学结果都是正确的。但是,答案应为0的某些列显示为1.36424205265939E-12或类似的内容 我的数学是0+1414+-1414。答案应该是0,但我得到的结果是1.36424205265939E-12SQL查询将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,
我所有的数据类型都是浮点数。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。