如果字符串的小数点后仅包含零,如何删除字符串值中的尾随零和小数点?我使用了下面的代码:
String string1 = Double.valueOf(a).toString()这将删除(10.10和10.2270)中的尾随零,但我没有得到第一个和第二个输入的预期结果。
输入
10.0
10.00
10.10
10.2270预期输出
10
10
10.1
10.227发布于 2014-08-28 14:21:51
Java库有一个内置的类,可以为它做这件事。我是BigDecimal。
下面是一个用法示例:
BigDecimal number = new BigDecimal("10.2270");
System.out.println(number.stripTrailingZeros().toPlainString());输出:
10.227注意:使用接受String的BigDecimal构造函数很重要。你可能不想要带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);输出:
[10, 10, 10.1, 10.227]发布于 2014-08-28 14:03:22
试一试
DecimalFormat decimalFormat = new DecimalFormat("#.##");
String string1 = decimalFormat.format(10.000);发布于 2014-08-28 14:13:06
尝试如下所示的正则表达式:
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.275https://stackoverflow.com/questions/25541684
复制相似问题