mysql里的float(6.1)表示数值最大只能为6.1吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql里的float(6.1)表示数值最大只能为6.1吗?相关的知识,希望对你有一定的参考价值。
你仔细看好了,那个float后面括号中两个数字之间并不是点,而是逗号。不是指6.1,而是指这个浮点数最大长度为6,也就是六位,然后小数部分为1位。
至于存储范围,取决于你是否定义了无符号。
无符号的话,最小是0.0 最大能存储到99999.9,如果有符号的话,范围是:-99999.9至99999.9
这样的话,你是否明白了呢? 参考技术A float(6.1)总数(6位)精确到小数点后一位,decimal用法一样,decimal比float精确
MySQL中Decimal类型和Float Double的区别
参考技术A float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;MySQL
浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的
可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。
FLOAT和DOUBLE在不指
定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。
1、CREATE
TABLE
test(f
FLOAT(5,2)
DEFAULT
NULL,d
DOUBLE(5,2)
DEFAULT
NULL,de
DECIMAL(5,2)
DEFAULT
NULL);
2、DESC
test;
3、INSERT
INTO
test(f,d,de)
VALUES(1.23,1.23,1.23);
数据插入都正确
4、INSERT
INTO
test(f,d,de)
VALUES(1.234,1.234,1.23);
数据插入都正确,但是f和d由于标度的限制,舍去了最后一位。
5、INSERT
INTO
test(f,d,de)
VALUES(1.234,1.234,1.234);
数据也插入成功,但是有一个警告提示:
1
queries
executed,
1
success,
0
errors,
1
warnings
Note
Code
:
1265
Data
truncated
for
column
'de'
at
row
1
6、将id1,id2,id3的精度和标度都去掉
ALTER
TABLE
test
MODIFY
f
FLOAT;
ALTER
TABLE
test
MODIFY
d
DOUBLE;
ALTER
TABLE
test
MODIFY
de
DECIMAL;
DELETE
FROM
test;
DESC
test;
7、INSERT
INTO
test(f,d,de)
VALUES(1.234,1.234,1.234);
1
queries
executed,
1
success,
0
errors,
1
warnings
Note
Code
:
1265
Data
truncated
for
column
'de'
at
row
1
f和d的数据正确插入,而de被截断。
浮点数如果不写精度和标度,则会按照实际显示,如果有精度和标度,则会将数据四舍五入后插入,系统不报错,定点数如果不设置精度和标度,刚按照默认的(10,0)进行操作,如果数据超过了精度和标度值,则会警告!
同时,对数据求SUM()时会出现不同的结果,float和double求SUM都会出现很多小数点,而decimal求SUM得到的是精准数值:
8、INSERT
INTO
test(f,d,de)
VALUES(1.234,0.01,1.23);
数据都插入成功
9、SELECT
SUM(f),SUM(d),SUM(de)
FROM
test;
理论上SUM(f)=3.698,SUM(d)=2.474,SUM(de)=3.46,但f,d都出现后面很长的一串浮点小数点。
以上是关于mysql里的float(6.1)表示数值最大只能为6.1吗?的主要内容,如果未能解决你的问题,请参考以下文章
MySQL中Decimal类型和Float Double的区别