lei*_*ero 4 java double number-formatting
我正在尝试将字符串格式的双精度列表转换为双精度格式.我通过将它们放入列表并使用该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 + " ");
}
Run Code Online (Sandbox Code Playgroud)
这产生了输出:
-15.21 45.801 124.5
Run Code Online (Sandbox Code Playgroud)
但我想要尾随的零.使用格式化行的问题是我必须在打印值时指定我想要的浮点精度,但我没有任何特定的愿望使数字准确到某一点,只是留下零点如果他们在那里.
我接近这个错吗?
您可以存储对原始字符串的引用并打印它而不是解析的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);
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
-15.210 45.801 124.50
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3726 次 |
| 最近记录: |