2011-11-04 23 views
0
  1. 如果我將Decimal存儲爲1.200,我想要一個查詢檢索值爲1.200,但是如果我將值存儲爲1.450005,我想要一個查詢返回1.450005。
  2. 我需要能夠在字段上比較數字類型。

乍一看,十進制(10,6)似乎是我的要求很好地利用了現場代表的價格,但我真正想要的是可以存儲先進 6位字段在小數點的右邊,不一定全是6位數字,每個時間點我應該使用什麼樣的mysql類型來存儲變量精度的十進制數(可能會改變每條記錄)

如果滿足這個要求,我已經在字段中有效地編碼了精確信息,這對於將數據檢索到C++ Decimal對象的實例中是很有用的,這要求1.20(精度2)不同於1.2000 (精度4),即使它們具有相同的價值/價值。將精確信息保留在我的對象中對於進一步的算術運算至關重要。

我猜想,另一種方法是將值作爲varchar()存儲在Mysql中,該值將保留數字,但會丟失Mysql中的算術運算符功能。

第三個醜陋的替代方法是使用Decimal(10,6),然後使用一個額外的字段來存儲我正在使用的精度,這樣我就可以正確地轉換成我的C++實例。如果沒有更好的解決方案,我可能不得不採用這種醜陋的方法。

任何人都對我如何處理這些要求有很好的建議?

+2

你總結了3;如果你是一個必須實現它的人,我認爲這取決於你想要代碼有多複雜。如果你使用數字來計算sig figs,那麼我可能會選擇#3。但那只是我的個人意見。 – Crontab

+2

您已經正確分析了這些選項。沒有其他人。選一個。 #3對我來說最好。 –

回答

0

每crontab的和吉姆·加里森的意見,對這個問題最好的解決辦法是:

  1. 使用DECIMAL(10,6)存儲本身將存儲適用於精密號碼,
  2. 使用一個額外的場具體記錄
+0

查看[這個問題](http://meta.stackexchange.com/questions/139075/should-old-questions-with-a-solution-in-the-comments-but-no-posted-answer-be-ans )爲什麼我回答了一箇舊帖子。 –

+0

這隻有在您每次獲得一次DECIMAL記錄時纔有效。如果你會得到多行,並使用另一個列變量ROUND或TRUNCATE小數長度 - 它不起作用。 – Paktas

相關問題