无奈的mysql的浮点运算

最近用php+mysql4.1做了一个查询系统,有一个项目就是根据发票金额按照千分之三的返还率计算出佣金额。发票金额和佣金字段设定的是decimal(8,2)。通过对原始数据通过逐条分解,插入到数据库中。为了减少数据量,佣金是在数据插入完毕之后通过update语句生成的。原先倒也一直顺利。

但从上个月开始,对账期间发现佣金合计出现偏差。于是把文本原始数据导入excel,按照计算公式逐条核对,发现了问题。同样用round(佣金*0.003,2),mysql计算的大多数情况下与excel是相同的,但当发票金额为整数,且个位为5,的时候,计算出的金额不会四舍五入,比如48.455,得出就是48.45,而excel得出的是48.46,用php计算,也是48.46.

到网上查询,这是mysql存在的一个浮点计算问题,据说在5.1版本中已经解决。没办法,还是用php逐条计算吧。

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>