Mar*_*jer 9 java string double int
如果字符串在小数点后仅包含零,如何删除字符串值中的尾随零并删除小数点?我正在使用以下代码:
String string1 = Double.valueOf(a).toString()
Run Code Online (Sandbox Code Playgroud)
这将删除(10.10和10.2270)中的尾随零,但我没有获得第一和第二输入的预期结果.
输入
10.0
10.00
10.10
10.2270
Run Code Online (Sandbox Code Playgroud)
预期产出
10
10
10.1
10.227
Run Code Online (Sandbox Code Playgroud)
Java库有一个内置类,可以为它执行此操作.是的BigDecimal.
以下是一个示例用法:
BigDecimal number = new BigDecimal("10.2270");
System.out.println(number.stripTrailingZeros().toPlainString());
Run Code Online (Sandbox Code Playgroud)
输出:
10.227
Run Code Online (Sandbox Code Playgroud)
注意:使用BigDecimal带有a 的构造函数很重要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);
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
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);
Run Code Online (Sandbox Code Playgroud)
输出:
[10, 10, 10.1, 10.227]
Run Code Online (Sandbox Code Playgroud)
Vir*_*raj -1
尝试
DecimalFormat decimalFormat = new DecimalFormat("#.##");
String string1 = decimalFormat.format(10.000);
Run Code Online (Sandbox Code Playgroud)