2010-09-30 85 views
0

什麼是在MySQL中存儲浮點數的最佳數據類型?將浮點數存儲爲INT?

我可以以某種方式將它存儲爲INT嗎?

我在想VARCHAR是我的最佳選擇,但是如果你們知道更好的東西,我將不勝感激。

Thanx提前!

+7

mysql的FLOAT,REAL和DOUBLE_PRECISION類型有什麼問題? – Habbie 2010-09-30 14:35:04

+0

它沒有什麼不對,只是不知道他們,我主要是前端開發人員,而不是後端,但我給了它一個鏡頭,因此所有的愚蠢問題,謝謝你謙恭我! :) – Odyss3us 2010-09-30 14:45:13

+0

@ user270311浮點數的用法很少。你爲什麼要使用它? – 2010-09-30 15:02:51

回答

1

爲什麼要將浮點存儲爲int? MySQL和編程語言一樣有十進制和浮點類型。

我假設你有一個很好的理由。要存儲浮點數爲int,你可以嘗試的幾件事情:

  • 乘以10的數量^ n,其中n是你想保持顯著的位數,然後截斷分數的其餘部分部分。當你將它從DB中取出時,轉換爲浮點數/小數點併除以n。這需要一個足夠大的int來存儲乘積值;在32位體系結構中,「本地」int可以存儲高達20億的值。
  • 將數字拆分爲整數部分及其小數部分。這需要兩個字段,但每個字段的值可以達到最大整數值,因此您可以輕鬆精確到百萬分之一。
6

取決於什麼類型的浮點數你存儲的關於MySQL的數字類型,所有的細節可以在這裏找到:

http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html

十進制:對於貨幣,你是因爲它的精確,你不會得到奇怪的小數點算術四捨五入應該使用十進制。

INT:是的,你可以存儲浮點數作爲整數來獲得性能。例如,只要顯示時總是/ 100,貨幣可以以19.56美元或1956美元的價格存儲,而會計軟件經常這樣做。此外,只要在數據庫之外除以10,000,000,則可以將整數的緯度/經度存儲爲322274063,-1109654800 = 32.2274063,-110.9654800。

FLOAT/DOUBLE:然後當然有很長的和雙倍的。性能不是優先或小數位數變化時使用它們。

SO規則:如果性能是一個問題,你知道的小數位總是固定的長度,你可以輕鬆地存儲的INT來存儲浮動。