Tôi không nghĩ rằng có một cách để làm việc đó chỉ với DecimalFormat
, nhưng điều này một liner sẽ chăm sóc của vấn đề:
formattedValue = formattedValue.replaceAll("^-(?=0(.0*)?$)", "");
Nó loại bỏ (thay thế bằng ""
) dấu trừ nếu nó được theo sau bởi 0-n ký tự của "0.00000..."
, do đó, điều này sẽ làm việc cho bất kỳ kết quả tương tự như "-0"
, "-0."
hoặc "-0.000000000"
Dưới đây là một số mã kiểm tra:
public static void main(String[] args) {
System.out.println(format(-0.023));
System.out.println(format(12.123));
System.out.println(format(-12.345));
System.out.println(format(-0.123));
System.out.println(format(-1.777));
}
public static String format(double number) {
DecimalFormat df = new DecimalFormat("#,##0.0");
df.setRoundingMode(RoundingMode.HALF_UP);
String formattedValue = df.format(number);
formattedValue = formattedValue.replaceAll("^-(?=0(.0*)?$)", "");
return formattedValue;
}
Output (như dự kiến):
0.0
12.1
-12.3
-0.1
-1.8
Tôi gặp lỗi: 'Không thể định dạng đối tượng đã cho làm Số '. Bạn nên sử dụng giá trị '-0.023' không phải là chuỗi' "-0.023" ' – alfasin