2011-08-11 57 views
2

所以這裏是我的問題,我們試圖把價格放入我們的數據庫,但由於某種原因它將10.00轉換爲10或10.50轉換爲10.5,這使得它僅僅消除了尾隨零。尾隨零不會進入數據庫

我檢查了SQL語句和它說的價格= 10.00 ....所以我真的困惑,爲什麼/在那裏剝離.00

香港專業教育學院通過檢查,我們輸入數字一路在INSERT或UPDATE的最後一步,它將尾隨的零全部保留到UPDATE或INSERT,然後當你檢查表時......零點被丟棄

+0

什麼是你的領域的類型? –

+0

我剛剛檢查了數據庫中的列是一個雙....嗯,感謝米奇,我會努力嘗試格式化它 – Ray

+3

注意:要非常謹慎使用雙數據類型來存儲貨幣值.... –

回答

8

您是否在使用decimal(N,2)類型或類似的存儲數據?如果不是,那麼這是正常行爲。請參閱http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

請不要按照其他答案中的建議,並將其留給您的表示層。正確完成工作並存儲確切的十進制值。這樣你避免了四捨五入的問題。

ps還有一個單獨的問題,就是如何使用您使用的任何語言來管理值。希望它使用包含適當格式的特殊類型。如果不是的話,那麼你可能會擔心你如何處理代碼中的值(一種可能性是100倍並使用整數美分),但是你需要注意數學正確輪迴 - 這很複雜,但是有一個原因很複雜;如果你只是把所有東西都放在雙打中,它可能會很簡單,但是對於某些值有一些奇怪的錯誤......)

+0

+1 。你是對的,在我意識到這是'價格'欄之前,我在上面的問題中輸入了我的第一條評論。 –

+0

我不是......我使用雙倍數,我將嘗試更改爲十進制 – Ray

+0

Works Perfectly !! !! 非常感謝!!! – Ray

0

10和10.00是一樣的10.0

如果你想顯示那些尾隨數字,或者因爲它是更常見的2位小數,那麼你需要編寫你的代碼來做到這一點。既然你沒有說你正在使用什麼語言,我不能真正幫你做這個部分。

+0

使用php – Ray

+0

通過一個對象檢索數據請看這裏 - http://stackoverflow.com/questions/324358/zero-pad-digits-in-string –

0

它在數據庫中的外觀沒有關係。重要的是您如何在您的應用中呈現數據。 10.00與10的值相同,因此在數據表中它將被保存爲10.

您必須在輸出前格式化數字。