I have double
我想转换成的值String
具有以下格式限制的值:
分数位数 = max( 0, 5 - 整数位数 )
本质上,如果可能的话,我想将位数保留为 5,并在必要时四舍五入小数位。例如:
float String
-------------------------
1 1
100 100
100000 100000
99999 99999
99999.99 99999
9999.99 9999.9
999.99 999.99
23.34324 23.343
我研究过使用十进制格式 http://docs.oracle.com/javase/6/docs/api/index.html?java/text/DecimalFormat.html但据我所知,它并没有完全实现我所追求的目标。
它允许使用设置最大小数位数setMaximumFractionDigits()
但据我所知,我必须计算整数位数并自己执行上述计算。
所以基本的问题是是否有一个好的、干净的内置方法来以这种方式格式化数字。
public class SignificantFormat {
public static String formatSignificant(double value, int significant)
{
MathContext mathContext = new MathContext(significant, RoundingMode.DOWN);
BigDecimal bigDecimal = new BigDecimal(value, mathContext);
return bigDecimal.toPlainString();
}
public static void main(String[] args) {
double[] data = { 1, 100, 100000, 99999, 99999.99, 9999.99, 999.99, 23.34324 };
for(double d: data){
System.out.printf("Input: %10s \tOutput: %10s\n", Double.toString(d), formatSignificant(d, 5));
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)