如何配置 BigDecimal
值,以便如果它少于 32 个字符,则应将其显示为纯字符串,否则应以工程格式表示?
例如:
3690215840369.69874120035964120 - plain string
369043523215840369.69874120035964120 - engineering format of representation
我尝试通过以下方式解决此问题:
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());
但是如果您指的是科学表示法,那么请查看 Steve 的答案 here 并将其与我答案的第一部分相结合,替换 bd.toEngineeringString()
与格式(bd)
关于java - BigDecimal 实例的工程表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31479605/