我正在用 Java 制作一个计算器,最多只能显示 17 个字符,因此 .
被视为一个字符,E15
被视为 3 个字符。
我在这个网站上进行了广泛的研究,但找不到这样的问题......(抱歉,如果有重复)
如何强制将像 9999998990000001
这样的大 BigDecimal 转换为像 9.999998990000E15
这样的东西。
我不希望它始终采用科学记数法,因此长度小于 16 个字符的数字不应采用科学记数法。
如果您无法理解的话,它本质上就像一个手持计算器。
最佳答案
您可以简单地检查数字是否小于 16 个字符,如果不这样做:
private static String formatNumber(BigDecimal bDecimal, int scaleInt) {
NumberFormat nFromatter = new DecimalFormat("0.0E0");
nFromatter.setRoundingMode(RoundingMode.HALF_UP);
nFromatter.setMinimumFractionDigits(scaleInt);
return formatter.format(bDecimal);
}
System.out.println(formatNumber(new BigDecimal("0.00001"), 2));
// Output will be 1.00E-5
System.out.println(formatNumber(new BigDecimal("0.00001"), 3));
// Output will be 1.000E-5
关于java - 如何截断/舍入大 BigDecimal 数字以采用科学记数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47988140/