随笔 - 4  文章 - 13  trackbacks - 0
<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

很奇怪哦,大家看一下这段代码
 NumberFormat numberFormat=NumberFormat.getNumberInstance();
  numberFormat.setMaximumFractionDigits(2);
  numberFormat.setMinimumFractionDigits(2);
  float f=5.535f;
  double d=5.535;
  System.out.println(numberFormat.format(f));  //输出值为?
  System.out.println(numberFormat.format(d));//输出值为?

看一下输出1 为5.53
而输出2 为5.54

有哪位兄台给我讲一下原因呢?
posted on 2008-09-04 13:55 foxinsky 阅读(832) 评论(1)  编辑  收藏

FeedBack:
# re: 数据精度问题[未登录] 2008-09-04 23:43 zz
我的解释是这样的:
format(f)的时候是将f转换成为了double,需要将double转换为string,然后再格式化。从下面的实验结果就可以就可以发现
float f=5.535f;
double d=f;
double e=5.535;
System.out.println(f);
System.out.println(d);
System.out.println(e);

5.535
5.534999847412109
5.535

可以得出在toString之后结果已经发生了变化,所以format的结果可想而知是
5.53
5.54


  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: