MySQL中round()四舍五入之坑

Posted 行舟逐梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中round()四舍五入之坑相关的知识,希望对你有一定的参考价值。

计算数值时,因将一个数值由代码四舍五入改成SQL四舍五入做整数处理而产生了误差。该字段为varchar类型,修改后的计算结果与之前的结果当小数位为.5四舍五入进位时,竟然出现误差。例如2.5,当字段类型为varchar或double类型时,使用round函数,结果为2,而decimal则进位正常。
 
执行SQL:SELECT c_varchar,round(c_varchar),c_double,round(c_double),c_decimal,round(c_decimal) from round_test
运行结果:2.5 2 2.50 2 2.50 3
 
参考相关资料,看到有人说将字段值相加一个不影响结果的小数后,数值可以正常,测试一下,的确如此。
 
执行SQL:SELECT c_varchar,round(c_varchar+0.000001),c_double,round(c_double+0.000001),c_decimal,round(c_decimal) from round_test
运行结果:2.5 3 2.50 3 2.50 3
 
具体原因,后续分析。。。

以上是关于MySQL中round()四舍五入之坑的主要内容,如果未能解决你的问题,请参考以下文章

MySQL ROUND函数:四舍五入

MySQL ROUND函数:四舍五入 注意事项

MySQL中ROUND和TRUNCATE的区别

SQL 中 Round 用法

mysql函数(二.数字函数)

MySQL白菜教程(Level 3)