1.首先昂灵,對(duì)于精度比較高的東西,比如money,我會(huì)用decimal類型馒索,不會(huì)考慮float,double,因?yàn)樗麄內(nèi)菀桩a(chǎn)生誤差岖食,numeric和decimal同義红碑,numeric將自動(dòng)轉(zhuǎn)成decimal。
DECIMAL從MySQL 5.1引入泡垃,列的聲明語(yǔ)法是DECIMAL(M,D)析珊。在MySQL 5.1中,參量的取值范圍如下:
·M是數(shù)字的最大數(shù)(精度)蔑穴。其范圍為1~65(在較舊的MySQL版本中忠寻,允許的范圍是1~254),M 的默認(rèn)值是10存和。
·D是小數(shù)點(diǎn)右側(cè)數(shù)字的數(shù)目(標(biāo)度)奕剃。其范圍是0~30,但不得超過(guò)M哑姚。
說(shuō)明:float占4個(gè)字節(jié)祭饭,double占8個(gè)字節(jié),decimail(M,D)占M+2個(gè)字節(jié)叙量。
如DECIMAL(5,2) 的最大值為9 9 9 9 . 9 9倡蝙,因?yàn)橛? 個(gè)字節(jié)可用。
M 與D 對(duì)DECIMAL(M, D) 取值范圍的影響
類型說(shuō)明取值范圍(MySQL < 3.23)取值范圍(MySQL >= 3.23)
MySQL < 3.23 MySQL >=3.23
DECIMAL(4, 1) -9.9 到 99.9 -999.9 到 9999.9
DECIMAL(5,1) -99.9 到 999.9 -9999.9 到 99999.9
DECIMAL(6,1) -999.9 到 9999.9 -99999.9 到 999999.9
DECIMAL(6,2) -99.99 到 999.99 -9999.99 到 99999.99
DECIMAL(6,3) -9.999 到 99.999 -999.999 到 9999.999
在MySQL 3.23 及以后的版本中绞佩,DECIMAL(M, D) 的取值范圍等于早期版本中的DECIMAL(M + 2, D) 的取值范圍寺鸥。
結(jié)論:
當(dāng)數(shù)值在其取值范圍之內(nèi),小數(shù)位多了品山,則直接截?cái)嘈?shù)位胆建。
若數(shù)值在其取值范圍之外,則用最大(小)值對(duì)其填充肘交。