numeric,decimal,float和double类型

浮点类型(近似值) - FLOAT,DOUBLE

FLOATDOUBLE类型代表近似数字数据值。MySQL对于单精度值使用四个字节,对于双精度值使用八个字节。

因为FLOAT,SQL标准允许FLOAT在括号中的关键字后面的位的精度(而不是指数的范围)的可选规范 MySQL还支持这种可选的精度规范,但精度值仅用于确定存储大小。从0到23的精度导致4字节的单精度FLOAT 列。从24到53的精度导致8字节的双精度DOUBLE列。

定点类型(精确值) - DECIMAL,NUMERIC

在MySQL中,NUMERIC实现为DECIMAL,关于DECIMAL同样适用的说明 NUMERIC

DECIMAL列声明中,精度和比例可以(通常是)指定; 例如:

salary DECIMAL(5,2)

在这个例子中,5是精度和 2尺度。精度表示为值存储的有效数字的数量,标度表示小数点后可存储的位数。

标准SQL要求,DECIMAL(5,2)能够存储任何一个五位数和两位小数,所以值可以存储在salary 列范围-999.99至 999.99

在标准SQL中,语法 相当于 类似地,语法相当于允许实现来决定其值的方式 MySQL支持这两种变体形式的语法。默认值为10。DECIMAL(M)DECIMAL(M,0)DECIMALDECIMAL(M,0)MDECIMALM

如果刻度为0,DECIMAL则不包含小数点或小数部分。

最大位数为DECIMAL65,但给定DECIMAL 列的实际范围可以由给定列的精度或比例来约束。当这样的列被分配一个数字小于指定比例允许的小数点后面的数值时,该值将转换为该比例。(精确的行为是操作系统特定的,但通常的效果是截断到允许的位数。)

总结:

float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)

double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)

decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)

 

float f = 345.98756f;//结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。

double d=345.975423578631442d;//结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。

注:float和double的相乘操作,数字溢出不会报错,会有精度的损失。

decimal dd=345.545454879.....//可以支持28位,对最后一位四舍五入。

注:当对decimal类型进行操作时,数值会因溢出而报错。


MYSQL官网相关:https://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html

相关博客:http://www.cnblogs.com/haiyang1985/archive/2009/03/03/1402394.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值