java - 从字符串转换为 double 删除尾随零

标签 java double number-formatting

我正在尝试将 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/

相关文章:

java - 在java中扫描图像中的特定颜色

java - 斐波那契数列的 Junit

c# - 如何使 double 正常工作? C#

c++ - std::vector<float> 和 double* - 这有多安全?

javascript - Web Firestore - 将 Double 值保存到 Firebase

r - 防止 as.character 使用指数符号 r

java - 如何使用 java.text.NumberFormat 来添加单位?

java - 当我的堆栈为空时无限循环

r - 如何控制 write.table() 输出中的小数位数?

java - jetty 容器上的 solr 配置