在做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