如何删除字符串值中的尾随零,并在小数点后面只包含零的情况下删除小数点?我正在使用以下代码:
String string1 = Double.valueOf(a).toString()
这将删除(10.10和10.2270)末尾的零,但我在第一和第二个输入中没有得到期望的结果。
输入
10.0
10.00
10.10
10.2270
期望输出
10
10
10.1
10.227
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]
stripTrailingZeros()
ه’ŒtoPlainString()
çڑ„组هگˆن¼ڑه¯¼è‡´è¾“ه‡؛结وœè¶…ه‡؛و‚¨çڑ„规范م€‚وˆ‘ه·²ç»ڈè؟›è،Œن؛†و›´و£م€‚ - jdphenix1.23
变成了 1.229999999999999982236431605997495353221893310546875
。所以确实不能有尾随零。 - ycomp尝试
DecimalFormat decimalFormat = new DecimalFormat("#.##");
String string1 = decimalFormat.format(10.000);
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
double
类型,而这个问题的输入是String
类型。 - jdphenixString string1 = Double.valueOf(a).toString()
? - Scary Wombat