Banker's rounding algorithm
TIL
781
Ruby
119
White

Cẩm Huỳnh viết ngày 16/12/2016

Bản 2.4.0-rc1 của Ruby mới ra tuần rồi có khá nhiều thứ cập nhật, một trong những thứ đó là họ đã thay đổi thuật toán làm tròn qua Banker's Rounding.

Với những số bình thường Ruby 2.4 sẽ làm tròn nó bằng cách lấy số gần nhất với nó, ví dụ:

round(2.6)      => 3
round(3.54, 1)      => 3.5
round(-3.56, 1)     => 3.6

Tuy nhiên với những số ở giữa như 2.5, 3.55, 4.375 thì có 2 cách làm tròn phổ biến là:

  • Rounding away from zero, tên khoa học là Làm tròn như điểm kiểm tra, giả sử bạn thi được 9.5 điểm mặc định bạn được 10 điểm, bạn thi được 4.5 coi như bạn đậu.
  • Banker's rounding - hay round-to-even, làm tròn tới số chẵn gần nhất. Ở cách làm tròn này thì 2.5 => 2, 3.5 => 4.

Sao kì vậy?

Banker's rounding được áp dụng để tránh thiên vị (biased), giả sử bạn có một dãy số x.5 bất kì, bạn làm tròn từng số cộng lại chia bình quân, thì kết quả bạn có được bằng Banker's Rounding thường gần số bình quân chính xác hơn là cách làm kia.

Banker's Rounding theo mình biết cũng được sử dụng mặc định trong C# và VB.

Cơ mà cách họ thay đổi thuật toán trong một bản cập nhật con như thế này thì thật là khó lường ...

P/S: Tuy nhiên nếu cô giáo mà sử dụng Banker's Rounding để chấm thi các bạn thì các bạn cứ tán vỡ mồm.

hqc 16-12-2016

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Cẩm Huỳnh

48 bài viết.
474 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
69 5
image cover]imgcover] “Make it work, make it right, make it fast.” Bạn vừa viết xong một ứng dụng web :tada:. Mọi thứ chạy ổn. Code cũng đã được...
Cẩm Huỳnh viết hơn 2 năm trước
69 5
White
49 26
Vừa rồi mình vừa tiết kiệm được $5 mỗi tháng sau khi migrate cái (Link) từ Digital Ocean sang Heroku Free Dyno. (Ảnh) Kết quả thật mĩ mãn vì hầu ...
Cẩm Huỳnh viết hơn 3 năm trước
49 26
White
47 9
(Ảnh) Vì sao lại là Bật Đèn? Ai từng đọc qua Tắt Đèn hẳn đã biết tác phẩm được kết thúc bằng tình huống: Buông tay, chị vội choàng dậy, mở cửa...
Cẩm Huỳnh viết gần 4 năm trước
47 9
Bài viết liên quan
White
9 6
Chưa xem phần 2? Xem (Link) Trong bài viết này tôi giới thiệu cho các bạn về khái niệm function arity, một cách gọi mĩ miều của số lượng argument ...
Lơi Rệ viết hơn 5 năm trước
9 6
White
9 1
Tiếp theo (Link) Mình sẽ hướng dẫn cách test căn bản cho API mình tạo. Thật ra mà nói thì mình phải viết test trước khi làm nhưng mà để tránh việc...
My Mai viết gần 6 năm trước
9 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
48 bài viết.
474 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!