MySQL在查询中循环,结果错误

时间:2017-01-05 11:44:04

标签: mysql sql database mysql-5.5

我有一个关于我在MySQL服务器上运行的查询的问题(v5.5.50-0 + deb8u1)。

SELECT 12 - (SELECT qty FROM Table WHERE id = 5213) AS Amount

所以金额值是12 - 8,5500000000000007 = 3.4499999999999993

但如果我运行查询:

 SELECT qty FROM Table WHERE id = 5213

它返回8.55,这是记录中写入的正确数字,所以我期待第一个querty返回3.45。

"数量"表格中的列"表"是双重的。

怎么可能?如何从查询中获得正确的答案? 提前谢谢

2 个答案:

答案 0 :(得分:2)

那是just the way floating numbers are

  

浮点数有时会引起混淆,因为它们是   近似值并未存储为精确值。浮点值为   用SQL语句编写的值可能与值不同   内部代表。

这种说法也适用于许多编程语言。有些数字甚至没有确切的表示。这是来自python manual

的内容
  

这个问题最初在基地10中更容易理解。考虑一下   分数1/3。您可以将其近似为基数10分数:

     

0.3或更好,

     

0.33或更好,

     

0.333等等。无论你愿意记下多少位数,结果都不会完全是1/3,但会是一个   越来越接近1/3的近似值。

     

以同样的方式,无论你愿意多少基数2位数   使用时,十进制值0.1不能完全表示为基数2   分数。在基数2中,1/10是无限重复的分数

所以简而言之,一般做float1 = float2类型的比较是一个坏主意,但每个人都会忘记它。

答案 1 :(得分:1)

您可以将'qty'列定义为十进制(10,2)