Chạy chương trình này rất đơn giản:Tại sao BigDecimal mới ("0.0"). StripTrailingZeros() có thang tỷ lệ 1?
public static void main(final String... args)
{
System.out.println(BigDecimal.ZERO.scale());
System.out.println(new BigDecimal("0").scale());
System.out.println(new BigDecimal("0.0").stripTrailingZeros().scale());
System.out.println(new BigDecimal("1.0").stripTrailingZeros().scale());
}
kết quả đầu ra:
0
0
1
0
Câu hỏi của tôi là khá đơn giản: tại sao không phải là thứ ba println
đầu ra 0
? Điều đó sẽ có vẻ hợp lý ...
EDIT: OK, vì vậy, đây là một lỗi rất cũ:
và trong thực tế, nó là "tác phẩm" cho bất kỳ số zero: new BigDecimal("0.0000").stripTrailingZeroes().scale()
là 4!
bản sao có thể có của [Làm rõ hành vi của BigDecimal.stripTrailingZeroes()] (http://stackoverflow.com/questions/5239137/clarification-on-behavior-of-bigdecimal-striptrailingzeroes) –
Câu hỏi mà Andrew đang liên kết đến là thực sự giống nhau, nhưng lưu ý rằng câu trả lời được chấp nhận là không chính xác. Hành vi bạn thấy là lỗi được đề cập trong câu trả lời khác: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6480539 – jarnbjo