当前位置:  开发笔记 > 编程语言 > 正文

如何使用java.text.MessageFormat格式化小数百分比

如何解决《如何使用java.text.MessageFormat格式化小数百分比》经验,为你挑选了3个好方法。

我的百分比被默认的java.text.MessageFormat函数截断,如何格式化百分比而不会丢失精度?

例:

String expectedResult = "12.5%";
double fraction = 0.125;

String actualResult = MessageFormat.format("{0,number,percent}", fraction);
assert expectedResult.equals(actualResult) : actualResult +" should be formatted as "+expectedResult;

david a... 52

看起来像这样:

String actualResult = MessageFormat.format("{0,number,#.##%}", fraction);

... 工作中.

编辑:要查看#和%的解释,请参阅java.text.DecimalFormat的javadoc.

编辑2:是的,国际化是安全的.格式字符串中的点被解释为小数点分隔符,而不是硬编码点.:-)



1> david a...:

看起来像这样:

String actualResult = MessageFormat.format("{0,number,#.##%}", fraction);

... 工作中.

编辑:要查看#和%的解释,请参阅java.text.DecimalFormat的javadoc.

编辑2:是的,国际化是安全的.格式字符串中的点被解释为小数点分隔符,而不是硬编码点.:-)



2> Chei..:

我认为正确的方法如下:

NumberFormat percentFormat = NumberFormat.getPercentInstance();
percentFormat.setMaximumFractionDigits(1);
String result = percentFormat.format(0.125);

它还考虑了内部化.例如,在我的匈牙利语语言环境的机器上,我得到了"12,5%".初始化percentFormat NumberFormat.getPercentInstance(Locale.US)当然会给出"12.5%".



3> Steve B...:

怎么样

DecimalFormat f = new DecimalFormat( "###.#" );
System.out.println( f.format( 12.5 ) );

char'#'格式不打印0表示不存在.所以12.5 - >"12.5",12.0 - >"12",而不是"12.0".您当然可以使用例如"###,###.##"来设置格式化程序,只有在您需要精度时才会显示hundreths位置.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有