在MySql中存儲貨幣值的最佳方式是什麼?PHP:用於貨幣值的MySql數據類型
我已經看到了這一點:小數(5,2)
但那麼您可以在超過$ 999.99的金額不能進入。我的意思是我知道你可以將5改爲別的東西,但這似乎不是最合適的方式來做到這一點..然後我不知道這就是我發佈的原因。
我也看到存儲的數量也是一個無符號整數。那麼存儲貨幣價值的最有效方式是什麼?
在MySql中存儲貨幣值的最佳方式是什麼?PHP:用於貨幣值的MySql數據類型
我已經看到了這一點:小數(5,2)
但那麼您可以在超過$ 999.99的金額不能進入。我的意思是我知道你可以將5改爲別的東西,但這似乎不是最合適的方式來做到這一點..然後我不知道這就是我發佈的原因。
我也看到存儲的數量也是一個無符號整數。那麼存儲貨幣價值的最有效方式是什麼?
您預計您需要存儲多大的貨幣值? DECIMAL(15,2)
會處理最會拋出的東西。
我也看到存儲的數量也是一個無符號整數。
無符號表示該值永遠不會爲負 - 如果出現這種情況,您需要額外的方法來指示該值爲負值。我不推薦這種方法。
不知道,謝謝! – Mickey 2010-10-20 21:52:27
你的決定必須包括你如何執行舍入。企業傾向於對他們有利的收益進行分析,而數學取整可能是首選,也可能不是關心。這些可能會影響您的存儲選擇。
那麼貨幣呢?如果您想要支持多個地區的分佈式客戶端,則需要嵌入每個貨幣值的貨幣/區域設置。其他數據庫如何處理這個問題?
對於帶符號整數值,決定什麼是「最小利息值」(您是否關心0.001c?這意味着您不介意在超過1000次連續交易中丟失1c - 這是例如,在計算對低值的興趣時也是重要的)。如果0.001c正常,那麼當您寫入表格時,將所有值乘以1000,當您讀回時除以1000 ...
所有幣種均以美元爲單位。該值需要能夠表示正數和負數的數量..我不希望列類型舍入任何東西..小數位數是否會舍入數字? – Mickey 2010-10-20 21:42:58
不,DECIMAL值不是四捨五入的 - 我必須檢查,但是我的假設是如果您嘗試以更高的精度插入十進制值,它們將被截斷(中斷,不是四捨五入)(IE:小數點後三位成兩位小數放置欄)。 – 2010-10-20 21:46:13
是的,有兩個地方的建議如下。如果你劃分成本或增加稅收等,你一定會得到部分美分來處理。然後舍入將會發生。 – Kurucu 2010-10-20 21:46:17