MySQL中十进制类型和浮点双的区别(详细说明)
MySQL中有非标准数据类型,如浮点、双和其他标准数据类型,以及小数。不同之处在于,非标准类型,如浮点、双、等等,都存储在DB中作为近似值,而十进制则以字符串的形式保存数值。
浮点型是存储浮点数字,也就是十进制类型,但浮点型有缺点。当给定的数据为整数时,将用整数处理,因此在访问货币值时自然会遇到问题。我的默认值是0,而实际存储是0。类似地,我访问货币12,实际存储是12。
幸运的是,MySQL提供了两种数据类型:十进制。这个数据类型可以很容易地解决上述问题:小数型是由在同一类型的MySQL实现,这是在SQL92标准允许的。它们是用来保护有重要价值的准确要求,如与钱相关的数据。
数据定义
浮点数(m,s)m是全部长度,s是小数点后的长度。对于不准确的例子,许多网络,复制如下:
MySQL >创建表T1(C1浮(10,2),c3decimal(10,2));
查询OK,0行受影响(0.02秒)
插入到t1值(9876543.21,9876543.12);
查询OK,1行受影响(0秒)
从T1选择*;
---------------- ----------------- + + +
| C1 C3 | |
---------------- ----------------- + + +
| 9876543 | 9876543.12 |
---------------- ------------------ + + +
2行(0秒)
另一个例子:十进制(5,2)
MySQL >创建表T1(ID1浮(5,2)默认为空,2双(5,2)),
ID3的十进制(5,2)默认为空);
MySQL >插入T1值(1.2345,1.2345,1.2345);
查询OK行,1受影响,1警告(0.04秒)
显示警告;
+ + + + ------- ------ ------------------------------------------
级别代码信息| | | |
+ + + + ------- ------ ------------------------------------------
|注| |数据截断'1265 column'id3行1 |
+ + + + ------- ------ ------------------------------------------
1行集(0秒)
1.2345 -一个小数点后2位的最大值,因此可以节省保存,自动四-她-五被截断,但它将报告衰减。
12.34 - OK
1234.5 -因为小数部分不是满2,要填0,所以应该保存1234.50,所以数字的整数是超过5,内存是错误的。
1.2 -小数部分为0,保持1.20。
默认状态比较
如果你不写浮点经度和规模,将按照保值的实际精度,如果精度和规模,它会自动四舍五的结果插入后,系统是不是一个错误;如果你不写精确定点的数量和规模,按照十进制默认值(10,0)操作,如果数据超过了精度和刻度值,系统误差。
十进制类型和浮在上面的MySQL双之间的区别是,萧边分享了你的全部内容。我希望能给你一个参考,希望你能支持它。