有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Convert from string to 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

但是我想要后面的零。使用格式化行的问题是,在打印值时,我必须指定所需的浮点精度,但我不想让数字精确到某一点,只要保留零就行了

我是不是搞错了


共 (1) 个答案

  1. # 1 楼答案

    您可以存储对原始字符串的引用,并打印它,而不是解析的双精度字符串

    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