java - BigDecimal 实例的工程表示

标签 java javafx bigdecimal

如何配置 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/

相关文章:

JavaFX 修改多边形

java - 字符串 999999999.9999999999 四舍五入为 1,000,000,000 BigDecimal

Java BigDecimal 将负值变为正值

java - 如何获取添加到数据存储中的最后 10 条记录?

java - RxJava -- 终止无限流

java - Eureka Client - 无法 Autowiring 客户端(spring 说定义了 2 个 bean)

java - 如何固定边框节点?

java - 除了代码的可移植性之外,将 JavaFX 用于 android 项目而不是 android UI 本身的优势是什么

java - 从未缩放的 long 创建 BigDecimal

需要java日期比较帮助