2012-12-21 10 views
9

RoundingMode cho phép lập trình viên xác định những số điểm nổi nào được làm tròn. Điều này là tuyệt vời và tất cả, nhưng có một điều này về nó tôi thấy đặc biệt. Có lẽ tôi chỉ hiểu lầm điều gì đó cơ bản ở trường.Tại sao RoundingMode của Java HALF_UP lại từ -2,5 đến -3?

Nhưng chế độ làm tròn này được mô tả là chế độ tôi đã dạy ở trường, "Luôn tròn số gần nhất, và khi chết ở trung tâm, luôn tròn.", Nhưng tại sao nó lại tròn -2,5 đến -3 ?

Tôi kết luận rằng nó làm tròn lên về mặt giá trị tuyệt đối, nhưng -2 là, đối với tôi, chắc chắn "tăng" từ -2,5.

+0

Hãy xem câu hỏi này: http://stackoverflow.com/questions/269721/rounding-negative-numbers-in-java –

+0

http://docs.oracle.com/javase/1.5.0/docs/ api/java/math/RoundingMode.html Hãy xem cái này. Điều này có thể giúp bạn tìm phương pháp bạn đang tìm kiếm. –

Trả lời

6

RoundingMode.UP là chế độ làm tròn cho "cách xa 0". RoundingMode.FLOOR hướng tới cực âm, và CEILING hướng tới cực dương. HALF_UP phù hợp với UP khi phần phân số chính xác là 0,5.

Họ phải chọn một số cụm từ có nghĩa là "cách xa số không".

3

Lý do cơ bản được nêu trong JavaDocs cho RoundingMode.HALF_UP.

Chế độ làm tròn để tròn về "hàng xóm gần nhất" trừ khi cả hai hàng xóm đều cách nhau, trong trường hợp này làm tròn lên. Hoạt động như đối với RoundingMode.UP nếu phần bị loại bỏ là> = 0,5; nếu không, hoạt động như đối với RoundingMode.DOWN. Lưu ý rằng đây là chế độ làm tròn thường được dạy ở trường.

Các Wikipedia bài viết về phương pháp Làm tròn làm cho một tuyên bố khác nhau:

Ví dụ, bởi quy tắc này giá trị 23,5 được làm tròn đến 24, nhưng -23,5 được làm tròn xuống đến -23.

Đây là một trong hai quy tắc thường được giảng dạy trong các lớp học toán tiểu học ở Hoa Kỳ.

Mặc dù đã được yêu cầu trích dẫn.

+3

Vấn đề thực sự của OP có vẻ là quan niệm sai lầm rằng 'RoundingMode.UP' được hiểu là" hướng tới cực dương, "không được giải quyết trong câu trả lời này. –