如何配置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());
但是,如果您的意思是科学计数法,那么请查看史蒂夫的答案here,并将其替换为我的答案的第一部分,方法是将
bd.toEngineeringString()
替换为format(bd)