BigDecimal实例的工程表示

时间:2015-07-17 15:41:00

标签: java javafx bigdecimal

如何配置BigDecimal值,如果它少于32个字符,则应显示为普通字符串,否则应以engeneering格式表示?

例如:

  

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

我试图通过以下方式解决这个问题:

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

但输出是一样的。那么,我如何获得BigDecimal实例的工程表示?

1 个答案:

答案 0 :(得分:1)

你不能做这样的事情:

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());

但如果您的意思是科学符号,那么请查看Steve的答案here,并将bd.toEngineeringString()替换为{{format(bd)并将其与我的答案的第一部分结合起来1}}