Chinaunix首页 | 论坛 | 博客
  • 博客访问: 130327
  • 博文数量: 17
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-28 10:38
文章分类

全部博文(17)

文章存档

2009年(1)

2008年(16)

我的朋友

分类: Java

2008-11-25 10:56:07

各位大大!小弟我最近在学习NumberFormat,现在碰到一个很奇怪的问题,代码如下:
NumberFormat nf = NumberFormat.getInstance();
NumberFormat cnf = NumberFormat.getCurrencyInstance();
NumberFormat inf = NumberFormat.getIntegerInstance();
NumberFormat nnf = NumberFormat.getNumberInstance();
NumberFormat pnf = NumberFormat.getPercentInstance();

nnf.setMinimumIntegerDigits(4);
nnf.setMaximumFractionDigits(3);

System.out.println(nf.format(9999));
System.out.println(cnf.format(9999));
System.out.println(inf.format(9999.5145));//修改前
System.out.println(nnf.format(333.5145));//修改前
System.out.println(pnf.format(9999));
执行结果:
9,999
¥9,999
10,000
0,333.514
999,900%

NumberFormat nf = NumberFormat.getInstance();
NumberFormat cnf = NumberFormat.getCurrencyInstance();
NumberFormat inf = NumberFormat.getIntegerInstance();
NumberFormat nnf = NumberFormat.getNumberInstance();
NumberFormat pnf = NumberFormat.getPercentInstance();

nnf.setMinimumIntegerDigits(4);
nnf.setMaximumFractionDigits(3);

System.out.println(nf.format(9999));
System.out.println(cnf.format(9999));
System.out.println(inf.format(9999.51455));// 修改后
System.out.println(nnf.format(333.51455));// 修改后
System.out.println(pnf.format(9999));
执行结果:
9,999
¥9,999
10,000
0,333.515
999,900%


小弟我想问一下,为什么增加了一位数字就会出现不同的结果!谢谢!




nnf.setMaximumFractionDigits(3);

这里,你设置了小数部分的最大位数为3,显示的时候四舍五入了啊


问题就在于此,为什么在小数末尾增加了一位,就会有四舍五入了,而没增加的话就不会四舍五入了?


up



up 一下,



要想实现精确的四舍五入,最好使用java.math.BigDecimal类


使用NumberFormat的不是四舍五入而是就近舍入


Bug
阅读(10778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~