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

 

posted @ 2017-02-28 15:16  且听风吟-wuchao  阅读(1606)  评论(0编辑  收藏  举报