float精度丢失的问题
在做IPTV的时候,遇到以下这个问题:
现有一个float型数据,以下代码打印输出:
float n = 40272.48f; System.out.println(new Double(n * 100).intValue()); //输出结果如下: 4027248
当修改数据n为40272.49,并保存到数据库时发现,数据库的值依然为40272.48,突然想到这可能是float精度导致的,以下为验证代码:
float n = 40272.48f; System.out.println("n*100:"+new Double(n * 100).intValue()); System.out.println("n*10000:"+new Double(n * 10000).intValue()); //输出: n*100:4027248 n*10000:402724800
float n = 40272.49f; System.out.println("n*100:"+new Double(n * 100).intValue()); System.out.println("n*10000:"+new Double(n * 10000).intValue()); //输出 n*100:4027248 n*10000:402724896
联系方式:wuchaodzxx@126.com