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

Đề tài: Tại sao Phép so sánh 2 số kiểu float ra sai??

  1. #1
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Mặc định Tại sao Phép so sánh 2 số kiểu float ra sai??

    Mình có một đoạn code như thế này:
    C++ Code:
    1. #include<stdio.h>
    2. void main()
    3. {
    4.     float a,b;
    5.     a=1.011;
    6.     b=1;
    7.     float c=a-b;
    8.     if(c==0.011)
    9.         printf("Dung");
    10.     else
    11.         printf("Sai");
    12. }
    Nếu tính nhẩm thì chúng ta sẽ ra được c=0.011
    Nhưng tại sao khi mình debug, mình thấy rằng c lại khác con số trên (nó ra là: 0.011000037)
    => Dẫn đến xuất ra chữ "Sai"
    Bạn nào giải thích hiểu chổ này tí??

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Đã có người hỏi vấn đề này rồi : Không in hết được giá trị với vòng for
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    11

    Kết quả của bạn đúng rồi đó,
    nếu muốn chính xác thì printf("%0.3f",b-a) nhé.

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi pvhieu Xem bài viết
    Kết quả của bạn đúng rồi đó,
    nếu muốn chính xác thì printf("%0.3f",b-a) nhé.
    Ko hiểu gì hết trơn. Trong đoạn code của chủ topic đâu có gọi hàm printf ?
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  5. #5
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Loại câu hỏi này cứ vài bữa gặp lại một lần.
    Hình như chương trình học lập trình không có dạy phép tính số thực?

    Căn bản của số thực trong lập trình là hai số không thể so sánh bằng nhau trực tiếp được. Người ta chỉ có thể chấp nhận hai số là bằng nhau ở một sai số nào đó.

    Vd sai số là 0,01 thì hai số 5,005 và 5,008 coi như bằng nhau.

Các đề tài tương tự

  1. Code stack bằng danh sách liên kết viết bằng C. Sửa lỗi "cannot convert 'float' to 'float'... "
    Gửi bởi giangcoi92 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 11
    Bài viết cuối: 28-11-2011, 10:29 PM
  2. giải thích giùm mình lỗi cannot convert from 'float' to 'float*'
    Gửi bởi hoanghiep9x trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 06-05-2011, 08:20 PM
  3. float và double trong C++: warning C4244: conversion from 'double' to 'float'
    Gửi bởi dungtimtoinua2008 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 18-03-2010, 11:25 PM
  4. cannot convert float(*)[] to float* for argument '1' to void
    Gửi bởi vanphamvn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 10-12-2008, 05:12 PM
  5. Tạo một số float ngẫu nhiên | Tạo Random số float
    Gửi bởi md_vn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 20
    Bài viết cuối: 06-06-2008, 11:00 AM

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