Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 16 kết quả

Đề tài: cách làm tròn số trong C?

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    1

    Wink cách làm tròn số trong C?

    Em là thành viên mới cóng của forum. Em biết vấn đề này đã hỏi rồi. Nhưng em chưa hiểu được bản chất nên mong các bro làm giúp. Yêu cầu của em rất đơn giản: em có số 519.123. Em muốn làm tròn lên thành 520. Mong các bro giúp nhanh nhanh với. Em làm gần xong hết assignment rồi chỉ còn mỗi cái lỗi đó nữa thôi là xong. Mai đã nộp rồi. Thank các bro trước.

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    13

    C Code:
    1. #include    <stdio.h>
    2. #include    <conio.h>
    3. #include    <stdlib.h>
    4.  
    5. double ceil ( double ); // vd lam tron` 17,1 = 18
    6. double floor ( double ); // lam tron 17,1=17
    7.  
    8. main()
    9. {    
    10.       printf(" %lf\n",ceil(519.123));
    11.       printf(" %lf\n",floor(519.123));
    12.       getch();
    13.      
    14. }

    phải cái này ko bạn mình mới học cái này xong giờ cũng mới test thử ceil là làm tròn về bên tay phải

    vd 16.1 lên 17 , -15.2 lên -14
    Đã được chỉnh sửa lần cuối bởi tuantq : 17-07-2011 lúc 02:52 PM.

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

    C Code:
    1. //Lam tron
    2.  
    3. #include <stdio.h>
    4.  
    5. double round(double soCanLamTron, int chuSo);
    6.  
    7. main()
    8. {
    9.     double soCanLamTron;
    10.     int chuSo;
    11.    
    12.     printf("Nhap so muon lam tron: ");
    13.     scanf("%lf", &soCanLamTron);
    14.     printf("Lam tron den bao nhieu chu so thap phan:");
    15.     scanf("%d", &chuSo);
    16.     printf("Sau khi lam tron: %.6lf\n", round(soCanLamTron, chuSo));
    17. }
    18.  
    19. //Ham lam tron
    20. double round(double soCanLamTron, int chuSo)
    21. {
    22.     int temp;
    23.     int i, result = 1;
    24.    
    25.     //Pow
    26.     for(i = 1; i <= chuSo; i++)
    27.     {
    28.         result *= 10;
    29.     }
    30.    
    31.     temp = soCanLamTron*result;
    32.     if(temp%10 >= 5)
    33.     {
    34.         temp += 1;
    35.     }
    36.     soCanLamTron = (double)temp/result;
    37.     return soCanLamTron;
    38. }

    Mới code cái này dùng hàm để làm tròn, rất dể hiểu, bạn có thế xem thử (làm tròn cho số dương)

  4. #4
    Ngày gia nhập
    07 2011
    Bài viết
    13

    @maitan bạn búp thì phải mà theo mình hiểu bạn kia mún làm tròn 519.xyz đều lên 520 vd 519.0000000000001 = 520


    C Code:
    1. /* lam tron so */
    2.  
    3. #include    <stdio.h>
    4. #include    <conio.h>
    5. #include    <stdlib.h>
    6.  
    7. double ceil ( double ); // vd lam tron` 17,1 = 18
    8. main()
    9.      
    10. {     double n;
    11.       do
    12.       {
    13.       printf("================\n");
    14.       printf("Enter a Number: ");
    15.       scanf("%lf", &n);
    16.       printf("****************\n");
    17.       printf("number rounding: %.2lf\n\n",ceil(n));
    18.       }
    19.       while(1);
    20.       getch();
    21. }
    Đã được chỉnh sửa lần cuối bởi tuantq : 17-07-2011 lúc 07:20 PM.

  5. #5
    Ngày gia nhập
    07 2011
    Bài viết
    38

    Cho mình hỏi sao hàm
    double ceil ( double );
    chỉ có mỗi khai báo mà ko có định nghĩa vậy? mình chỉ biết mỗi hàm ceil trong cmath chứ ko nằm chỗ nào khác. Vậy cái định nghĩa của hàm trên nằm ở đâu vậy? Code bạn mình chạy ok, chỉ là thắc mắc ko hiểu chỗ đó thôi.

  6. #6
    Ngày gia nhập
    07 2011
    Bài viết
    13

    Mặc định cách làm tròn số trong C?

    Ceiling
    ceil, ceilf return the smallest integer value not less than the value received. Their prototypes are
    double ceil ( double );
    float ceilf ( float );
    For example, ceil(16.3) has a value of 17.0.


    Mình cũng ko biết giải thích sao nữa copy cho bạn 1 đoạn slide mình học trên trường
    ceil nằm trong cmath mà bạn

  7. #7
    Ngày gia nhập
    07 2011
    Bài viết
    38

    Trích dẫn Nguyên bản được gửi bởi tuantq Xem bài viết
    Ceiling
    ceil, ceilf return the smallest integer value not less than the value received. Their prototypes are
    double ceil ( double );
    float ceilf ( float );
    For example, ceil(16.3) has a value of 17.0.


    Mình cũng ko biết giải thích sao nữa copy cho bạn 1 đoạn slide mình học trên trường
    ceil nằm trong cmath mà bạn
    Thì mình chính là hỏi cái đó đây. Code trên bạn ko include cmath vào + khai báo mỗi dòng double ceil (double ); chứ ko có phần định nghĩa, thế mà vẫn chạy. Sao lại vậy đc nhỉ

  8. #8
    Ngày gia nhập
    07 2011
    Bài viết
    13

    ko rõ nữa mà mình học trong slide chỉ cần khai báo thư viện #include <stdlib> là nó chạy rồi

    mình cũng ko rõ vấn đề này lắm tại slide nó chỉ vậy thì học lỏm theo thôi

    cái thư viện stdlib mình xóa thử đi nó vẫn chạy lúc đầu tưởng nó ảnh hưởng nữa

  9. #9
    Ngày gia nhập
    07 2011
    Bài viết
    58

    cái đó theo mình nghỉ là do IDE của các bạn dùng, FreeC thì nhiều lúc không khai báo thư viện nào vẫn chạy được. Nhiều lúc còn do nó vấn đề, mình thấy các IDE cơ bản cho C nó thường xuyên lỗi lắm, tùy máy nữa, cài cùng một IDE mà máy chạy được máy báo lỗi.

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

    Trích dẫn Nguyên bản được gửi bởi tuantq Xem bài viết
    mình cũng ko rõ vấn đề này lắm tại slide nó chỉ vậy thì học lỏm theo thôi

    cái thư viện stdlib mình xóa thử đi nó vẫn chạy lúc đầu tưởng nó ảnh hưởng nữa
    là cái cstdio thì đúng hơn, vì bỏ ko include thư viện này thì nó báo ngay là ko xác định đc hàm ceil, nhưng mình vẫn ko hiểu vì sao lại như thế vì ceil vốn nằm ở trong cmath mà cmath thì ko có liên quan gì đến cstdio (hay tại mình nhầm?)
    Trích dẫn Nguyên bản được gửi bởi maitan_10000 Xem bài viết
    cái đó theo mình nghỉ là do IDE của các bạn dùng, FreeC thì nhiều lúc không khai báo thư viện nào vẫn chạy được. Nhiều lúc còn do nó vấn đề, mình thấy các IDE cơ bản cho C nó thường xuyên lỗi lắm, tùy máy nữa, cài cùng một IDE mà máy chạy được máy báo lỗi.
    Mình chạy trên codeblock và VS2008 bạn ạ

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

  1. Vẽ 1 đường tròn sau đó quay đường kính quanh tâm đường tròn trong C?
    Gửi bởi thuanlove trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 17-03-2012, 08:53 AM
  2. Di chuyển hình tròn chạy theo biên một hình tròn khác như thế nào?
    Gửi bởi ktxc15 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 17
    Bài viết cuối: 16-03-2012, 12:01 PM
  3. Database Ý tưởng làm tròn tiền trong phần mềm quản lý(Làm tròn tiền thanh toán cho khách)
    Gửi bởi cchangkhongayngo trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 12-06-2011, 08:09 AM
  4. Bài tập C++ Chỉ hiển thị 1 hình tròn, khi cần vẽ n hình tròn trong turbo C?
    Gửi bởi monkey_2513 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 26-12-2010, 09:59 AM
  5. Vẽ hình tròn, phóng to, thu nhỏ hình tròn trong C#?
    Gửi bởi thanhtung_ttt2002 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 30-03-2009, 12:16 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