如何删除String值中的尾随零并删除小数点

时间:2014-08-28 05:57:40

标签: java string int double

如果字符串在小数点后仅包含零,如何删除字符串值中的尾随零并删除小数点? 我使用以下代码:

String string1 = Double.valueOf(a).toString()

这会删除(10.10和10.2270)中的尾随零,但是我没有得到第一和第二输入的预期结果。

输入

10.0
10.00
10.10
10.2270

预期输出

10
10
10.1
10.227

3 个答案:

答案 0 :(得分:8)

Java库有一个内置类,可以为它执行此操作。它是BigDecimal

以下是一个示例用法:

BigDecimal number = new BigDecimal("10.2270");  
System.out.println(number.stripTrailingZeros().toPlainString());

输出:

10.227

注意:使用BigDecimal的{​​{1}}构造函数非常重要。你可能不想要一个String的那个。


这是一种方法,它将采用double并返回另一个Collection<String>数字,并删除尾随零,礼品包装。

Collection<String>

使用示例:

public static Collection<String> stripZeros(Collection<String> numbers) {
    if (numbers == null) { 
        throw new NullPointerException("numbers is null");
    }

    ArrayList<String> value = new ArrayList<>(); 

    for (String number : numbers) { 
        value.add(new BigDecimal(number).stripTrailingZeros().toPlainString());
    }

    return Collections.unmodifiableList(value);
}

输出:

ArrayList<String> input = new ArrayList<String>() {{ 
    add("10.0"); add("10.00"); add("10.10"); add("10.2270"); 
}};

Collection<String> output = stripZeros(input);
System.out.println(output);

答案 1 :(得分:0)

尝试

DecimalFormat decimalFormat = new DecimalFormat("#.##");
String string1 = decimalFormat.format(10.000);

答案 2 :(得分:-3)

尝试使用这样的正则表达式:

public static void main(String[] args) {
    String s = "10.0";
    System.out.println(s.replaceAll("[0]+$", "").replaceAll("(\\.)(?!.*?[1-9]+)", ""));

}

O/P:
10

input :String s = "10.0750";
O/P : 10.075

input : String s = "10.2750";
O/P : 10.275