firebird2.1中decimal字段的四舍五入

上周用firebird2.1做了一个劳资数据库,用来存储单位劳资信息并计算个人所得税。

深知税务人员秉公执法,锱铢不舍,所以不敢马虎,计算完毕后与税务机关的excel模板生产的数据进行了逐一的比较,发现存在2%的人员中存在一分钱的误差,估计是四舍五入的问题,用速算法算了算,发现问题出在小数点后第三位,比如如果是10.155,excel计算的结果是10.16,而把这个数值作为浮点数导入decimal字段时候,他是直接截取小数点后两位的,而10.156则取的是10.16,也就是说五舍六入了。

于是修改程序,那就是在程序中使用floattostr函数将浮点数转化为字符后插入,可以解决这个问题,但又出来另一个问题,那就是如果10.1445在excel里面是取10.14的,但在程序导入到数据库中则是10.15。后来再次修改,使用formatfloat函数规范数值,将所得税值取小数点后两位导入,这样就可以解决了。

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>