10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册 本手册摘录

12.22.4四舍五入行为

本节讨论了精确的数学舍入圆的()功能和插入到具有精确值类型的列中(小数和整数)。

圆的()根据其参数是否精确或近似,以不同的方式

  • 对于精确值编号,圆的()用来圆的一半了规则:小数部分为。5或更大的值,如果为正,则四舍五入到下一个整数;如果为负,则四舍五入到下一个整数。(换句话说,它是四舍五入的零。)小数部分小于0.5的值,如果为正,则四舍五入到下一个整数;如果为负,则四舍五入到下一个整数。(换句话说,它四舍五入到零。)

  • 对于近似值数字,结果取决于C库。在许多系统上,这意味着圆的()用来舍入到最近的偶数规则:在两个整数之间的分数部分的一个值舍入到最接近的整数。

下面的例子展示了精确值和近似值的舍入差异:

MySQL>选择圆形(2.5),圆形(25E-1);+ ------------ + -------------- + |圆形(2.5)|圆形(25E-1)|+ ------------ + -------------- + |3 |2 |+ ------------ + -------------- +

对于插入到小数或整数列,目标是精确的数据类型,因此舍入使用距离零一半,无论是否插入值是精确的还是近似值:

mysql> CREATE TABLE t (d DECIMAL(10,0));mysql> INSERT INTO t VALUES(2.5),(2.5 e0);查询OK, 2行影响,2 warning (0.00 sec)记录:2 duplicate: 0 warning: 2 mysql> SHOW warnings;+-------+------+----------------------------------------+ | 水平| |消息代码  | +-------+------+----------------------------------------+ | 注意| 1265 |数据截断列在第一行' d ' | | 1265 | |注意数据截断' d '行2列  | +-------+------+----------------------------------------+ 2行集(0.00秒)mysql >SELECT d FROM t;+------+ | d  | +------+ | 3 | | 3  | +------+ 2行集(0.00秒)

显示警告声明显示由于分数部分的舍入而被截断生成的注释。这种截断并非错误,即使在严格的SQL模式下也是如此(参见第12.22.3节“表达处理”)。