所以我的问题有点令人困惑,但仍然如此。我从外部源获取一个由 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/