轉載: http://shenmin1984.javaeye.com/blog/721466
創建表的時用的是DECIMAL(13,2),我認為它為13個整數位數+2為有效數字,因為在打印銀行交易的FORM時遇到了難題。輸出和建表的長度不一樣,我們以為它會打印出15為長度(13位整數+2位有效數字),但是卻遇到了難題。
經過我們的近一個小時的討論與時間,可以看出,在DECIMAL(13,2)的數據庫的插入時,我們首先輸入的數據為1234567890123.99,數據庫報出錯誤:長度超出了規定長度。
我們在此基礎上有刪除一個整數位,123456789012.99,結果還是報長度超出了范圍,經過我們的查找資料,得到了一初步的認證,就是整數位+小數位一共為13位,因為在1234567890.99的數據插入中結果成功。
於是我們又試驗了1234567890.999,結果顯示插入成功,打開數據庫中發現了插入的數據在數據庫中保存的數據為1234567890.99將第三位小數位給截斷。
我們得到了最后的結論,在DECIMAL(m,n)的設置中,整數的位數不能大於(m-n),但小數位可以大於n,但會從大於n的有效位開始截斷。
同時也解決了用datafactory插入數據時超過范圍的問題,因為我感覺datafactory的自定義DECIMAL類型字段的時候,整數部分不是很准確,存在超過范圍的情況,因此需要手動檢查一下這些字段的定義。