zoukankan      html  css  js  c++  java
  • 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
     
    具体原因,后续分析。。。

    作者:行舟逐梦

    出处:http://www.cnblogs.com/liujianwang

    感谢您的认真阅读。不足之处,欢迎指正。

  • 相关阅读:
    冲刺二4
    第十四周总结
    大道至简阅读笔记02
    冲刺二3
    冲刺二2
    大道至简阅读笔记01
    冲刺二1
    第十三周总结
    第一阶段意见评价
    5月23日团队开发日志
  • 原文地址:https://www.cnblogs.com/liujianwang/p/9245751.html
Copyright © 2011-2022 走看看