我有这个方法:
public void Example(BigDecimal value, int scale){
BigDecimal x = new BigDecimal("0.00001");
System.out.println("result: " + (value.multiply(x)).setScale(scale, RoudingMode.HALF_UP).toString());
例如,如果值 = 1 且比例 = 2,则输出为“结果:0.00”。我以为会是 1.00E-5。因此,我的疑问是:如果 BigDecimal 的小数位数大于某个值(在我的示例中为 2),我如何强制将其格式化为科学记数法?
最佳答案
这是 DannyMo 的一个自动设置比例的答案版本:
private static String format(BigDecimal x)
{
NumberFormat formatter = new DecimalFormat("0.0E0");
formatter.setRoundingMode(RoundingMode.HALF_UP);
formatter.setMinimumFractionDigits((x.scale() > 0) ? x.precision() : x.scale());
return formatter.format(x);
}
System.out.println(format(new BigDecimal("0.01"))); // 1.0E-2
System.out.println(format(new BigDecimal("0.001"))); // 1.0E-3
System.out.println(format(new BigDecimal("500"))); // 5E2
System.out.println(format(new BigDecimal("500.05"))); // 5.00050E2
关于java - 强制 BigDecimals 使用科学记数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18027047/