如何配置BigDecimal
值,如果它少于32个字符,则应显示为普通字符串,否则应以engeneering格式表示?
例如:
3690215840369.69874120035964120 - 普通字符串
369043523215840369.69874120035964120 - 表示的工程格式
我试图通过以下方式解决这个问题:
BigDecimal bd = new BigDecimal("8678679532108467840356746356832624562456786656736.6456442652456345673656");
System.out.println(bd.toEngineeringString());
System.out.println(bd.toPlainString());
但输出是一样的。那么,我如何获得BigDecimal
实例的工程表示?
答案 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}}