首页 > 解决方案 > 将可能为空的 Double 值转换为没有指数的字符串

问题描述

我正在尝试创建一个函数,该函数将输出 Double 作为具有以下要求的字符串:

  1. 它不会与指数一起显示。我相信 Double.toString(dblVal) 或 dblVal.toString() 会处理指数问题。
  2. 如果 Double 为 null,则不会出错并显示为“null”。如果 Double 为空,我相信 String.valueOf(dblVal) 会自动处理这个问题。

这是我所拥有的:

function doubleToString(Double dbl) {
    String strVal = null;
    if (dbl != null)
        strVal = String.valueOf(dbl);
    
    return strVal;
}

实现这两个要求的最佳方法是什么?我不认为 String.valueOf 会摆脱指数所以我不应该使用 String.valueOf() 而是使用 dblVal.toString() 然后只是手动检查它是否为空如果是这样,让 strVal 为空?

标签: java

解决方案


没有“一个”标准库方法可以满足您的所有需求。更棘手的部分是“不显示指数”——我能想到的一种方法是在BigDecimal课堂上。这涵盖了您的两个要求:

String doubleToString(Double dbl) {
    if (dbl == null) return "null";
    else return BigDecimal.valueOf(dbl).toPlainString();
}

示例:doubleToString(1234e-100)返回0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001234


推荐阅读