01/10/2018, 11:58

Độ chính xác của một số trong chương trình C/C++

Ví dụ như nhập 1 số có kiểu float là a = 999999999.0 và kiểm tra bằng lệnh If ( a==999999999.0) thì giá trị trả về là 2 số khác nhau. Lí do của việc đó có phải là do phần thập phân phía sau bị sai khác?

Ai giải thích hộ phần này với

HK boy viết 14:11 ngày 01/10/2018

Lí do của việc đó có phải là do phần thập phân phía sau bị sai khác?

Đúng. Lí do ở đây:

bữa có người bạn đó biểu thức trên. Trong javascript: biểu thức 0.1 + 0.2 > 0.3 là biểu thức đúng luôn bằng true. có bạn nào giải thích về vấn đề này không.

Kết luận: Đừng so sánh trực tiếp 2 số thực.

rogp10 viết 13:58 ngày 01/10/2018
itu.dk

IEEE754_article.pdf

3.56 MB

Có định lượng đàng hoàng.

Dễ đọc hơn:

softwareengineering.stackexchange.com
Mark Booth

What causes floating point rounding errors?

floating-point, numeric-precision
answered by Mark Booth on 02:31PM - 15 Aug 11

999999999.0 là double thì so với float không thể nào bằng :v nhưng nguyên nhân xa là do vượt quá số chữ số.

Học Lập Trình viết 13:58 ngày 01/10/2018

à cho mình hỏi thêm cách để biểu diễn chính xác 1 số dạng float hay double được không? làm sao để xuất ra số đó là .0000000000000000xxx và cách máy cấp phát bộ nhớ cho nó như thế nào?

rogp10 viết 14:05 ngày 01/10/2018

Trong link có hết mà bạn.

chu đức anh viết 14:11 ngày 01/10/2018

Cái này thì cậu có thể dùng 1 biến eps cực nhỏ :v

Bài liên quan
0