MySQL中float、double以及decimal的用法

1、浮点型和定点型

1.1 浮点型:

浮点型能够表示更大的数据范围,但是容易发生精度的问题
float和double属于浮点型,其取值范围与java中的浮点类型的取值范围相同,float占用4字节,double占用8字节

1.2 定点型:

定点型能够准确的表示具体的数据,多用于表示Money或者敏感的精确数字
decimal属于定点型,最大取值范围和double类型相同,给定decimal的有效取值范围由M和D决定。

2、float、double和decimal取值范围

MySQL中float、double以及decimal的用法_第1张图片注:
M表示:指定值的总位数的长度,即整数部分加上小数部分的长度。
D表示:指定值的小数部分的位数长度。
如:salary(6,2),就表示薪资的总位数为6,小数部分占2位,最大值是9999.99.,最小值是-9999.99

3、decimal的使用

3.1 用法1

列的声明语法是DECIMAL(M,D)。NUMERIC与DECIMAL同义,如果字段类型定义为NUMERIC,则将自动转成DECIMAL。

3.2 用法2

对于声明语法DECIMAL(M,D),自变量的值范围如下:

  • M是最大位数(精度),范围是1到65。可不指定,默认值是10。
  • D是小数点右边的位数(小数位)。范围是0到30,并且不能大于M,可不指定,默认值是0。

3.3 decimal的特点

  • DECIMAL(M,D)中,M范围是1到65,D范围是0到30。
  • M默认为10,D默认为0,D不大于M。
  • DECIMAL(6,2)可存储范围是从-9999.99到9999.99,超出存储范围会报错。
  • 存储数值时,小数位不足会自动补0,首位数字为0自动忽略。小数位超出会截断,产生告警,并按四舍五入处理。
  • 使用DECIMAL字段时,建议M,D参数手动指定,并按需分配。

3.4 decimal和浮点的比较(float和double)

float、double属于浮点数类型,它们同样可以存储小数,
但是float、double类型无法确保精度,很容易产生误差,
特别是在求和计算的时候,所有当存储小数,特别是涉及金额时推荐使用DECIMAL类型。

你可能感兴趣的:(我开发中的遇到的问题点,mysql,数据库)