Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Bài này sai ở chỗ nào?

  1. #1
    Ngày gia nhập
    04 2008
    Bài viết
    0

    Mặc định Bài này sai ở chỗ nào?

    Mình có đoạn code nhìn rất đơn giản như sau
    Code:
    #include <conio.h>
    #include <stdio.h>
    void main()
    {
    float a=0.2;
    float b=0.3;
    float c;
    c=b-a;
    if (c==0.1)
       printf("Yes\n");
     else 
       printf("No\n");
    getch();
    }
    Chạy nó ra "No" mới tài chứ. Có ai biết sai ở đâu sửa cho đúng giúp mình được không?

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Watch
    C Code:
    1. #include <cstdio>
    2.  
    3. int main(){
    4.   float a = 0.2;
    5.   float b = 0.3;
    6.   float c;
    7.   c = b - a;
    8.   printf("%f", c); //0.1 ?
    9.   if(c == b - a)
    10.     printf("Yes\n");
    11.   else
    12.     printf("No\n");
    13.   return 0;
    14. }
    Alternative solution :
    C Code:
    1. #include <cstdio>
    2.  
    3. int main(){
    4.   float a = 0.2;
    5.   float b = 0.3;
    6.   float c;
    7.   c = b - a ? printf("yes") : printf("no");
    8. }
    Đã được chỉnh sửa lần cuối bởi rox_rook : 21-04-2008 lúc 06:10 AM.

  3. #3
    Ngày gia nhập
    04 2008
    Bài viết
    0

    Sao lại thế bạn ơi? Gán cho c=b-a rồi lại if(c==b-a) thì kiểu gì nó chả ra "Yes" các giá trị tính toán ở trên đâu còn nghĩa lý gì nữa?
    Mà bài của mình sai ở chỗ nào nhỉ? c trong if() bị ép kiểu à?

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    c trong if() bị ép kiểu à?
    Ý nghĩa gì nói tui nghe thử xem ? Cái dòng tui in ra cho cậu, cậu có thử xem chưa mà hỏi thế này ? If mà ép được kiểu thì cast để làm gì ?

  5. #5
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Do sai số trong số thực phải hem nhỉ ? Ko chính xác 0.3-0.2=0.1 đâu nhỉ ?

  6. #6
    Ngày gia nhập
    10 2007
    Bài viết
    5

    Mặc định Bài này sai ở chỗ nào?

    Nguyên tắc cơ bản trong lập trình: Ko so sánh 2 số thực vì kết quả luôn ko chính xác.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn