DECIMAL和NUMERIC類型在MySQL中視為相同的類型。它們用于保存必須為確切精度的值,例如貨幣數(shù)據(jù)。當(dāng)聲明該類型的列時(shí),可以(并且通常要)指定精度和標(biāo)度;例如:
創(chuàng)新互聯(lián)建站主要從事網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)橋西,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108
DECIMAL(10,2)
在該例子中,10是精度,2是標(biāo)度。精度表示保存值的主要位數(shù),標(biāo)度表示小數(shù)點(diǎn)后面可以保存的位數(shù)
要求精度高就用decimal
審題錯(cuò)了...
簡(jiǎn)單寫下區(qū)別:
float:浮點(diǎn)型,含字節(jié)數(shù)為4,32bit,數(shù)值范圍為-3.4E38~3.4E38(7個(gè)有效位)
double:雙精度實(shí)型,含字節(jié)數(shù)為8,64bit數(shù)值范圍-1.7E308~1.7E308(15個(gè)有效位)
decimal:數(shù)字型,128bit,不存在精度損失,常用于銀行帳目計(jì)算。(28個(gè)有效位)
numberic === decimal
float f = 345.98756f;//結(jié)果顯示為345.9876,只顯示7個(gè)有效位,對(duì)最后一位數(shù)四舍五入。
double d=345.975423578631442d;//結(jié)果顯示為345.975423578631,只顯示15個(gè)有效位,對(duì)最后一位四舍五入。
注:float和double的相乘操作,數(shù)字溢出不會(huì)報(bào)錯(cuò),會(huì)有精度的損失。
decimal dd=345.545454879.....//可以支持28位,對(duì)最后一位四舍五入。
注:當(dāng)對(duì)decimal類型進(jìn)行操作時(shí),數(shù)值會(huì)因溢出而報(bào)錯(cuò)。
小數(shù)用double或者number不帶精度作為存儲(chǔ),
示例如下,
1、創(chuàng)建測(cè)試表,create table test_num(id number, fee number(10,3));
2、插入測(cè)試數(shù)據(jù),
insert into test_num values(1,0.8);
insert into test_num values(2,329.2);
insert into test_num values(4.44,15);
insert into test_num values(6,3);
commit;
3、查詢表中記錄,select * from test_num,可以看到小數(shù)已經(jīng)存入,
4、如果小數(shù)轉(zhuǎn)整數(shù),可以用trunc(直接去掉小數(shù))或round(四舍五入)函數(shù),
select t.*, trunc(fee) fee1, round(fee) fee2 from test_num t;
帶小數(shù)的字段可以用以下: float,double,decimal看你的數(shù)值范圍選擇。