(Floating Point Airthmatic lỗi) Tại sao kết quả không phải là không?

một số thập phân float giá trị chẳng hạn như 0,1 được chuyển đổi bởi trình biên dịch thành nhị phân tương đương bằng cách sử dụng một số đại diện điểm nổi. Thông thường một phao đại diện bởi 32 bit nhị phân có một độ chính xác khoảng 7 con số đáng kể. Copnsider phiên bản sau của chương trình của bạn
Code:
 float a = 1,0; char i; printf (0,1% 2.15f \ n \ n ", 0.1f); cho (i = 0;
 
Thnx Horace, Nó có nghĩa là độ chính xác của nó là 7 chữ số sau dấu thập phân. Regars, Naveed
 
đó là độ chính xác của tất cả các chữ số không chỉ sau dấu thập phân. Hãy xem xét pi = 3,1415926535897932384626433 - nếu float là 6 chữ số chỉ 3,14159 sẽ là đáng kể. trong tập tin tiêu đề là hằng số xác định độ chính xác và các thông tin khác cho các loại phao, ví dụ như FLT_DIG và DBL_DIG [url = http://www.cplusplus.com/reference/clibrary/cfloat/] cfloat (float.h) - C + + tham khảo [/url] xem xét chương trình sau đây
Code:
 # include # include int main () {float pi = pid 3.1415926535897932384626433f; đôi = 3,1415926535897932384626433; printf ("% d FLT_DIG DBL_DIG% d \ n", FLT_DIG, DBL_DIG); printf ("float pi% 2.20f \ n", pi); printf ("double pi% 2.20f \ n", pid);}
khi chạy bằng cách sử dụng gcc trên một PCgives Windows
Code:
 FLT_DIG 6 DBL_DIG 15 phao pi 3,141592741012573 đôi pi 3,141592653589793
bạn có thể thấy mặc dù pi float được in 20 chỗ sau khi các điểm thập phân chỉ có 5 hoặc 6 chữ số đầu tiên là đáng kể, còn lại là rác. pi đôi đáng kể cho khoảng 15 con số.
 

Welcome to EDABoard.com

Sponsor

Back
Top