Chú ý khi làm việc với floating point
TIL
595
programming
71
Ruby
114
White

linhnv viết ngày 05/05/2016

Khi làm việc đôi khi ta phải so sánh 2 số thập phân mà nếu không để ý sẽ dẫn đến kết quả sai lệch ngoài dự đoán như trong ví dụ dưới đây.

VD:

0.1 + 0.2 == 0.3
#=> false

Giải thích:

Bản chất là do máy tính ko thể biểu diễn chính xác hầu hết các số thập phân. Do đó khi code được biên dịch thì các số này đc làm tròn về giá trị gần nhất với nó (ở dạng binary).

Tips:

Vậy làm thế nào để so sánh đc 2 số dạng này?

  • Dùng 1 kiểu dữ liệu đặc biệt (ruby: BigDecimal)
  • Làm tròn các số thập phân muốn so sánh về cùng 1 số dạng có số chữ số sau giống phẩy giống nhau

Link:

http://floating-point-gui.de/basic/

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

linhnv

1 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Bài viết liên quan
White
8 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 gần 3 năm trước
8 6
White
8 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 3 năm trước
8 1
White
4 2
__Chú thích__: Đây là bản dịch tiếng Việt của bài viết gốc của tôi. Nếu bạn muốn xem bản tiếng Anh, xin hãy trỏ tới URL (Link) Lời mở (Link) là ...
Lơi Rệ viết hơn 3 năm trước
4 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
0 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á!