2016-12-03 91 views
0

我正在嘗試創建一個用戶可以選擇其貨幣的與錢相關的應用程序。我試過的Mysql數據類型是十進制(19,4)。現在問題是幾個貨幣需要三個精度和一些需要兩個 例如: 阿曼里亞爾需要三個精度。即1000 baisa = 1阿曼里亞爾。因此,我的客戶可能會輸入6.783阿曼里亞爾。 如果我的美國客戶只需要2精度爲100美分= 1美元,他們可能會輸入5.50。Mysql數據類型爲錢

當我插入到我的數據庫使用十進制(19,4)這兩個條目,它分別保存爲6.7830和5.5000。

現在真正的痛苦是當我需要顯示他們的entrys,因爲我不想在阿曼里亞爾條目和00美元中顯示額外的0。我也嘗試過浮動,但最後一位數字有時會四捨五入。

是否有任何mysql數據類型,我可以保存精確的條目,因爲它是沒有任何舍入或額外的零?如果沒有這樣的入口,我怎麼才能讓它變得可愛?

回答

0

您可以使用VARCHAR來存儲確切的表示,但我不建議這麼做,因爲它需要更多的字節來將一個數字存儲爲一個字符串。而且,對值進行的任何運算都會將其轉換爲數字。

我建議您使用DECIMAL(19,4),然後在應用程序代碼中格式化該值,以顯示相應的數字。每種編程語言都有一些功能,如printf(),它允許您控制輸出格式,而不管存儲的值如何。

+0

我如何追蹤適當的數字?我是否需要創建一個新的色彩來跟蹤時段後的數字位數。即6.783的情況下,我需要保存3嗎? – Rishad

+1

聲明列類型,其精度將由需要最高精度位數的貨幣使用。所有其他貨幣也可以使用這種數據類型。您的應用程序必須包含根據貨幣類型對值進行格式設置的邏輯。 –

+0

請注意'DECIMAL(..,4)'只比'(..,2)'多一個字節,所以不會浪費太多空間。我同意這是取決於應用程序去除不需要的尾隨零。 –