当前位置: 代码迷 >> java >> BigDecimal实例的工程表示形式
  详细解决方案

BigDecimal实例的工程表示形式

热度:71   发布时间:2023-07-31 11:23:28.0

如何配置BigDecimal值,以使其如果少于32个字符,则应将其显示为纯字符串,否则应以工程格式显示?

例如:

3690215840369.69874120035964120-纯字符串
369043523215840369.69874120035964120-表示的工程格式

我尝试通过以下方式解决此问题:

    BigDecimal bd = new BigDecimal("8678679532108467840356746356832624562456786656736.6456442652456345673656");
    System.out.println(bd.toEngineeringString());
    System.out.println(bd.toPlainString());

但是输出是相同的。 那么,如何获得BigDecimal实例的工程表示形式?

你不能做这样的事情:

BigDecimal bd = new BigDecimal("8678679532108467840356746356832624562456786656736.6456442652456345673656");
System.out.println(bd.toPlainString().length()<32 ? bd.toPlainString() : bd.toEngineeringString());

并且如果需要在检查32时忽略小数点:

BigDecimal bd = new BigDecimal("8678679532108467840356746356832624562456786656736.6456442652456345673656");
int decimalOffset = 0;
if (bd.toPlainString().indexOf('.')>=0)
        decimalOffset=1;
System.out.println(bd.toPlainString().length()-decimalOffset<32 ? bd.toPlainString() : bd.toEngineeringString());

但是,如果您的意思是科学计数法,请查看史蒂夫的答案,并将其与我的答案的第一部分结合起来,方法是将bd.toEngineeringString()替换为format(bd)