如果字符串在小数点后仅包含零,如何删除字符串值中的尾随零并删除小数点? 我使用以下代码:
String string1 = Double.valueOf(a).toString()
这会删除(10.10和10.2270)中的尾随零,但是我没有得到第一和第二输入的预期结果。
输入
10.0
10.00
10.10
10.2270
预期输出
10
10
10.1
10.227
答案 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