重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
DECIMAL和NUMERIC类型在MySQL中视为相同的类型。它们用于保存必须为确切精度的值,例如货币数据。当声明该类型的列时,可以(并且通常要)指定精度和标度;例如:
创新互联建站主要从事网站建设、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务桥西,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
DECIMAL(10,2)
在该例子中,10是精度,2是标度。精度表示保存值的主要位数,标度表示小数点后面可以保存的位数
要求精度高就用decimal
审题错了...
简单写下区别:
float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)
double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)
decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)
numberic === decimal
float f = 345.98756f;//结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。
double d=345.975423578631442d;//结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。
注:float和double的相乘操作,数字溢出不会报错,会有精度的损失。
decimal dd=345.545454879.....//可以支持28位,对最后一位四舍五入。
注:当对decimal类型进行操作时,数值会因溢出而报错。
小数用double或者number不带精度作为存储,
示例如下,
1、创建测试表,create table test_num(id number, fee number(10,3));
2、插入测试数据,
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,可以看到小数已经存入,
4、如果小数转整数,可以用trunc(直接去掉小数)或round(四舍五入)函数,
select t.*, trunc(fee) fee1, round(fee) fee2 from test_num t;
带小数的字段可以用以下: float,double,decimal看你的数值范围选择。