我正在學習MySQL,並且在float
的範圍和精度方面有問題。MySQL浮點類型範圍和精度混淆
從mannual:
對於FLOAT,SQL標準允許的精度的可選規範(但不是指數的範圍)以下括號中的關鍵字FLOAT位數。 MySQL也支持這個可選的精度規格,但精度值僅用於確定存儲大小。從0到23的精度導致一個4字節的單精度FLOAT列。從24到53的精度導致一個8字節的雙精度DOUBLE列。
我創建使用此命令
create table test (f_a float(23));
我有4個混亂的表:
- 什麼的
but not the range of the exponent
在mannual意思? - 我可以毫無問題地執行
insert into test values (1e38);
。即使我輸入38
數字,它仍然有效。但39
數字或1e39
將失敗。那麼這個38
的含義是什麼? - 如何檢查
f_a
的型號轉換?當我執行desc test;
時,f_a
的類型仍然是float
,即使我在該列中插入了38
數字編號。 - 那麼,範圍和精度地球上有什麼區別?
優秀的答案,但也很好的建議是*除非你有這樣做的一個具體的,告知理由不使用這些數據類型* - 這些類型存儲*近似*值,並且偏好範圍超過精度。使用'DECIMAL'通常是你想要的。浮動和雙打肯定是不準確的。如果你計算金錢,'DECIMAL'數據類型是唯一可接受的類型。 –
@ Michael-sqlbot好點!許多tks先生博特:D – spacegoing