在java的開發中,貨幣在數據庫中MySQL常用Decimal和Numric類型表示,這兩種類型被MySQL實現爲同樣的類型。他們被用於保存值,該值的準確精度是極其重要的值,例如與金錢有關的數據。當聲明一個類是這些類型之一時,精度和規模的能被(並且通常是)指定;例如:
salary DECIMAL(9,2)
在這個例子中,9(precision)代表將被用於存儲值的總的小數位數,而2(scale)代表將被用於存儲小數點後的位數。因此,在這種情況下,能被存儲在salary列中的值的範圍是從-9999999.99到9999999.99。
DECIMAL和NUMERIC值作爲字符串存儲,而不是作爲二進制浮點數,以便保存那些值的小數精度。一個字符用於值的每一位、小數點(如果scale>0)和“-”符號(對於負值)。如果scale是0,DECIMAL和NUMERIC值不包含小數點或小數部分。
不使用float或者double的原因:因爲float和double是以二進制存儲的,所以有一定的誤差。
比如:在數據庫中c1,c2,c3分別存儲類型是float(10.2),decimal(10.2),float類型。
插入數據:
INTO test (c1,c2,c3) VALUES (1234567.23,1234567.23,1234567.23) |
數據在數據庫中的存儲結果是:
可以看出,使用float類型存儲有一定的誤差。因此使用decimal或者numric類型。