java - 有没有一种有效的方法来舍入内部具有双值的字符串并得到 double 答案?

标签 java formatting format string-formatting number-formatting

所以我的问题有点令人困惑,但仍然如此。我从外部源获取一个由 8 个字符串组成的数组,其中所有字符串都包含 double 值。这些值通常为小数点后 4 位:

12345.5678

我想做的是将其转换为小数点后 3 位并四舍五入并将结果输出:

12345.568

下面是代码示例:

private double[] parseDouble(String[] values) { 
    double[] output = new double[values.length];
    for (int i = 0; i < values.length; i++) { 
        output[i] = Double.parseDouble(String.format("%.3f", 
        Double.parseDouble(values[i]));
    } 
    return output; 
}

所以我的问题是:

1.还有比这更好的方法吗?因为在我看来,解析为双倍 2 次是相当多余的。

2.如果字符串数组中的值数量在 100-1000 左右,是否会影响性能?

提前致谢!

最佳答案

为了答案的合理性,我可以建议这样做,但您不需要声明数组结果

private double[] parseDouble(String[] values) {
    double[] result = Arrays.stream(values).mapToDouble(Double::parseDouble).toArray();
    return result;
}

现在只会将字符串解析为 double ...

对于它们看起来如何,您需要一个格式化程序:

DecimalFormat df = new DecimalFormat("#.###");
df.setRoundingMode(RoundingMode.CEILING);
double[] x = { 12345.5678, Math.PI, 123.123451, Math.E };
Arrays.stream(x).forEach(n -> System.out.println(df.format(n)));

我建议结合这两种方法,并记住无论打印多少个小数位, double 都是 double 。

关于java - 有没有一种有效的方法来舍入内部具有双值的字符串并得到 double 答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44444207/

相关文章:

java - 从 log4j1 迁移到 log4j2

html - 如何处理 XSLT 中嵌入的 XML 标记?

formatting - CSS 行高和填充

string - Excel Vba 将字符串上的某些文本加粗

java - 如何缩短资源包调用?复合组件?

Java 或 Scala RFC5987

java - 无法打印/获取二维数组的特定行

python - 如何更改写入 csv 文件的数字类型?

model - 从头开始生成3D模型的文件格式?

java - 有人可以向我解释一下关键字 "this"吗?