Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Thắc mắc về một số vấn đề cơ bản trong C

    lệnh
    printf("%f",sqrt(16));
    in ra kết quả đúng là 4.000000
    trong khi, lệnh
    printf("%d",sqrt(16));
    in ra kết quả sai là 0
    Vậy mình có thể hiểu là phép toán sqrt luôn có định dạng kiểu là %f ???


    lệnh
    printf("%f",5.5/2); in ra kết quả đúng là 2.750000
    trong khi lệnh
    printf("%d",5.5/2);
    in ra kết quả sai là 0

    nhưng
    printf("%d",5/2); in ra kết quả là 2 (phép chia 2 số nguyên sẽ xóa bỏ phần sau dấu (.) ????)
    trong khi, lệnh
    printf("%f",5/2); in ra kết quả sai là 0.000000
    ??? cái này thì hiểu thế nào?
    muốn hiện ra kết quả của 5/2=2.5 thì làm thế nào???

    Mới học C nên còn kém quá, mọi người chỉ giáo với!!!!!!

    - - - Nội dung đã được cập nhật ngày 02-10-2014 lúc 05:16 PM - - -

    mình hiểu thế này
    1.phép toán sqrt có định dang kiểu là %f (nếu để %d thì kết quả sai)
    2.số nguyên/số nguyên có định dạng kiểu là %d (kết quả in ra là phần nguyên của thương)
    3.số thập phân chia số thập phân có định dạng kiểu là %f(kết quả in ra là thương của phép chia)
    Mình hiểu thế có sai không mọi người?
    để lấy thương chính xác của 5/2 thì ngoài cách chuyển về thập phân/ thập phân tức là 5.0/2.0 thì còn cách nào để lấy kết quả đúng nữa?

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    1, 2, 3 đúng.
    Còn câu hỏi cuối thì nếu bạn dùng float thì nên ghi 5.0f/2.0f, sẽ đỡ mất công đổi kiểu.
    Bạn có thể ghi 5.0/2 cũng được, vì số 2 sẽ được đổi thành 2.0 double thì mới chia được.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    reference http://www.tutorialspoint.com/c_standard_library/c_function_sqrt.htm

    Cách viết đúng:
    Mã:
    (int)sqrt((double)16)

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •