在mysql中,貨幣常使用Decimal和Numric類型的字段表示,這兩種類型被MySQL實(shí)現(xiàn)為同樣的類型;它們被用于保存值,該值的準(zhǔn)確精度是極其重要的值,例如與金錢有關(guān)的數(shù)據(jù)。
開發(fā)中,貨幣在數(shù)據(jù)庫中MySQL常用Decimal和Numric類型表示,這兩種類型被MySQL實(shí)現(xiàn)為同樣的類型。他們被用于保存值,該值的準(zhǔn)確精度是極其重要的值,例如與金錢有關(guān)的數(shù)據(jù)。當(dāng)聲明一個類是這些類型之一時,精度和規(guī)模的能被(并且通常是)指定;例如:
salary DECIMAL(9,2)
在這個例子中,9(precision)代表將被用于存儲值的總的小數(shù)位數(shù),而2(scale)代表將被用于存儲小數(shù)點(diǎn)后的位數(shù)。因此,在這種情況下,能被存儲在salary列中的值的范圍是從-9999999.99到9999999.99。
DECIMAL和NUMERIC值作為字符串存儲,而不是作為二進(jìn)制浮點(diǎn)數(shù),以便保存那些值的小數(shù)精度。一個字符用于值的每一位、小數(shù)點(diǎn)(如果scale>0)和“-”符號(對于負(fù)值)。如果scale是0,DECIMAL和NUMERIC值不包含小數(shù)點(diǎn)或小數(shù)部分。
不使用float或者double的原因:因?yàn)閒loat和double是以二進(jìn)制存儲的,所以有一定的誤差。
比如:在數(shù)據(jù)庫中c1,c2,c3分別存儲類型是float(10.2),decimal(10.2),float類型。
插入數(shù)據(jù):
INTO test (c1,c2,c3) VALUES (1234567.23,1234567.23,1234567.23)
數(shù)據(jù)在數(shù)據(jù)庫中的存儲結(jié)果是:
可以看出,使用float類型存儲有一定的誤差。因此使用decimal或者numric類型。
推薦教程:mysql視頻教程