Thư viện Java có một lớp được xây dựng trong lớp có thể làm điều này cho nó. Đó là BigDecimal
.
Đây là một cách sử dụng ví dụ:
BigDecimal number = new BigDecimal("10.2270");
System.out.println(number.stripTrailingZeros().toPlainString());
Output:
10.227
Lưu ý: Điều quan trọng là sử dụng các nhà xây dựng BigDecimal
mà phải mất một String
. Có thể bạn không muốn một người mất double
.
Dưới đây là một phương pháp mà sẽ mất một Collection<String>
và trở về khác Collection<String>
số với trailing số không lấy ra, gói quà tặng.
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);
}
sử dụng Ví dụ:
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);
Đầu ra:
[10, 10, 10.1, 10.227]
hãy thử sử dụng BigDecimal –
đặt cược tốt nhất là regex cho yêu cầu đó – vikeng21
@ScaryWombat đề xuất trùng lặp có một 'double' như đầu vào . Câu hỏi này có một 'Chuỗi'. – jdphenix