ulm*_*ngt 6 java number-formatting
我有double值,我想转换为String具有以下格式限制的值:
number_of_fraction_digits = max(0,5 - number_of_integer_digits)
基本上我想尽可能将位数保持为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
我已经研究过使用DecimalFormat,但据我所知,它并没有完全实现我所追求的目标.
它允许设置最大小数位数,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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3651 次 |
| 最近记录: |