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

浙公网安备 33010602011771号