2016-04-27 154 views
0

FloatsDoubles表示近似數值數據值。由於這個原因,我們無法在where的原因上比較它們,就像我們對其他數據類型所做的那樣。在MySQL中比較浮點數?

有沒有,如果我比雙與浮子這樣CAST(column_name as CHAR) = CAST(@value as CHAR)

任何缺點是有一個原因,MySQL的網站建議使用ABS(a - b) <= some value

+0

一般來說,如果你想要做這種比較,那麼你可能不該」不要使用FLOATS或DOUBLES – Strawberry

+0

@Strawberry我知道小數是首選。我只需要使用浮動/雙打。 – MATH000

+0

@ MATH000不確定你正在使用什麼網站資源,但我不知道在MySQL中有兩個參數的ABS函數。你通常會做'ABS(a - b)<=某個值'。至於使用該公式的原因,「某個值」通常稱爲「公差值」。將其視爲比較中可接受的差異水平。如果它是0.001,那麼比較兩個浮點數將返回真值,如果差值在千分之一以內。 –

回答

1

也許這個簡單的例子可以總結與CHAR問題...

SELECT CAST(2 AS CHAR) > CAST(11 AS CHAR); 
+------------------------------------+ 
| CAST(2 AS CHAR) > CAST(11 AS CHAR) | 
+------------------------------------+ 
|         1 | 
+------------------------------------+ 
1 row in set (0.31 sec) 

的mysql>