今天下午业务部门彪过来一个电话,去年刚毕业时候做的一个小程序出了点问题,对账差了0.05元,过不了校验。一开始我还怀疑是数据有问题,但是复制到excel里以后发现金额是正确的,那必然就是程序出了问题。
查了半天程序,最后在一个累加的double型上盯了一会,又问了下同事,果然是这里出了问题,0.1被计算成了0.09999999,最后导致了误差的产生。网上说这是有double的精度造成的问题,2进制和10进制的差异。
改用Decimal就搞定这个问题了,查了下资料,商业计算上都是用BigDecimal,没有用double和float的,看来基础还不够扎实,惭愧啊,Mark一下,提醒自己。
