結論:
1. float 默認只保存6位(除去小數點),若是超過6位,則四捨五入,因此float存儲的數據是不精確的,只是近似值;
2. decimal,若是輸入的數據超過了定義的最大值,那麼則溢出,數據庫裏面存儲的是定義的最大值,例如,decimal(5,2)輸入123123.45,實際存儲爲999.99;
3. decimal,若是隻是小數部分超過定義的長度,那麼則截斷(非四捨五入)指定長度,例如,decimal(10,2)輸入12345678.123456,實際存儲爲12345678.12;
4. decimal,整數部分和小數部分是分開存儲的,每9個數字佔用4個字節,在mysql內部使用的二進制存儲,基本沒有長度的限制;
建議:
1. 儘可能不用float類型;
2. 存錢之類的數據,使用int(bigint)來存,在計算的時候除以100;
3. 必定要存小數的話,decimal是不錯的選擇,可是須要考慮到數據的範圍問題,以防越界產生的錯誤;