审题错了...
简单写下区别:
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类型进行 *** 作时,数值会因溢出而报错。
无论MYSQL还是SQL SERVER,用float类型存放0.55是不会出问题的,显示为1可能是相关的客户端软件显示时候的宽度不够,自动进行了四舍五入而已,你可以使用MYSQL的命令用SQL显示一下,结果有误差,但是值是对的,比如可能显示0.55000000001或者0.54999999999可以在建表的时候限定小数点的长度,例如decimal(5,2),后面的2就是2位的意思。如果表已经建好,可以在查询语句中用函数 round(X,2) 转换,X为字段,后面的数字为长度,你要几位就填几。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)