免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1070 | 回复: 0
打印 上一主题 下一主题

关于NumberFormat的使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-25 10:56 |只看该作者 |倒序浏览
各位大大!小弟我最近在学习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


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/52135/showart_1664455.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP