我正在尝试将 double 列表从字符串格式转换为 double 格式。我通过将它们放入列表并使用 Double.parseDouble(string)
方法来做到这一点。
这适用于大多数数字,但当 double 包含尾随零时它会产生不需要的输出 parseDouble
方法正在删除它。我不想删除它。
String[] values = {"124.50", "45.801", "-15.210"};
List<Double> nums = new ArrayList<Double>();
for(String s: values)
nums.add(Double.parseDouble(s));
Collections.sort(nums);
for(Double d: nums){
System.out.print(d + " ");
}
这会产生输出:
-15.21 45.801 124.5
但我想要尾随零。使用格式化行的问题是我必须在打印值时指定我想要的浮点精度,但我没有任何具体的愿望让数字精确到某个点,只是如果他们在那里。
我是不是处理错了?
最佳答案
您可以存储对原始字符串的引用并打印它而不是解析的 double
public static void main(String[] args) {
String[] values = {"124.50", "45.801", "-15.210"};
List<MyDouble> nums = new ArrayList<MyDouble>();
for(String s: values)
nums.add(new MyDouble(s));
Collections.sort(nums);
for(MyDouble d: nums){
System.out.print(d + " ");
}
}
static class MyDouble implements Comparable<MyDouble> {
final double val;
final String string;
MyDouble(String str) {
string = str;
val = Double.parseDouble(str);
}
@Override
public String toString() {
return string;
}
@Override
public int compareTo(MyDouble o) {
return (int) (val - o.val);
}
}
结果:
-15.210 45.801 124.50
关于java - 从字符串转换为 double 删除尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21107699/