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双之间的区别是,萧边分享了你的全部内容。我希望能给你一个参考,希望你能支持它。