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

Đề tài: [Solved] Giúp em về hiển thị số 1.99999999999999999999

  1. #1
    Ngày gia nhập
    09 2008
    Nơi ở
    Hà Nội
    Bài viết
    0

    Mặc định [Solved] Giúp em về hiển thị số 1.99999999999999999999

    Em có đoạn code như sau.
    Code:
    void inandout()
    {
         int i;
    
         double val[3] = {1.999,1.999999999,1.9999999999999999};
         printf("TC      Input Value\t\t\t Output value");
         printf("     \t\t\t\t\t\t        (%%20.16lf)\t (%%14.10lf)\t(%%6.21lf)\n");
              for (i=0;i<3;i++)
         printf("%d %20.16lf\t %20.16lf %14.10lf    %6.2lf\t\n",i+1,value[i],val[i],val[i],val[i]);
    }
    Khi in ra màn hình thì số 1.9999999999999999999999999 đều biến thành 2.00000000000000 hết :( làm thế nào để vẫn giữ nguyên các số 1.999,1.99999999 mà ko bị đổi :(( em tính dùng tới xâu nhưng ko biết dùng thế nào :((
    Nothing is impossible.

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    724

    có rất nhiều cách để làm được yêu cầu của bạn.
    (chỉ in ra được số 1.999999999999999999999)
    ở đây mình đưa ra 3 cách;
    cách 1:
    C Code:
    1. printf("1.999999999999999999999");

    cách 2:
    C Code:
    1.     char *a;
    2.     a = (char*)malloc(sizeof(char)*100);   
    3.     a = "1.9899999999999999999999999999999999";
    4.     printf("%s",a);
    5.     if(a!=NULL)
    6.         free(a);

    cách 3: bạn khai báo một cấu trúc và làm theo nó.
    mình đang tìm cách viết các toán tử cho nó. hy vọng sẽ khả thi.
    C Code:
    1. typedef struct _So {
    2.     int nNguyen;
    3.     char *sThapPhan;
    4. }So;
    5.  
    6. void printSo(So a)
    7. {
    8.     printf("%d",a.nNguyen);
    9.     printf("%s",a.sThapPhan);
    10. }
    11. void main()
    12. {
    13.  
    14.     So a;
    15.     a.nNguyen = 1;
    16.     char *s = new char[20];
    17.     strcpy(s,".9999999999999");
    18.     a.sThapPhan = s;
    19.  
    20.     printSo(a);
    21. }


    chúc bạn thành công.

  3. #3
    Ngày gia nhập
    09 2008
    Nơi ở
    Hà Nội
    Bài viết
    0

    Sẵn đây cho em hỏi luôn là có cách nào khai báo 1 lúc 3 biến không ạ. Ví dụ như
    Code:
    double value[3]{1.9999,1.99999999,1.999999999999999999}
    Em có thể thay double bằng char được ko
    Nothing is impossible.

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

    thay double = char thì phải như thế này VD:
    Code:
    const char *value[3]={"1.9999","1.99999999","1.999999999999999999"};
    code ra gió bão

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

    Nếu bạn muốn dùng kiểu double value[3] như ở trên cấu trúc thứ 3 của mình thì bạn phải làm hơi thủ công một xíu.

    bạn phải tách phần nguyên ra rồi sau đó dùng tách phần thập phân ra sau.

    vd:
    C Code:
    1. So arrsoDai[3];
    2. arrarrsoDai[0].nNguyen = 1;
    3. arrarrsoDai[0].sThapPhan = "99999";
    4. arrarrsoDai[0].nNguyen = 1;
    5. arrarrsoDai[0].sThapPhan = "9999999999";
    6. arrarrsoDai[0].nNguyen = 1;
    7. arrarrsoDai[0].sThapPhan = "9999999999999";




    chúc bạn thành công.

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

  1. [ Solved ]Duyệt đồ thị bằng BFS cần giúp đỡ T_T !
    Gửi bởi rox_rook trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 21-11-2008, 07:09 PM
  2. [ Solved ]Cần giúp đỡ để tổng hợp bài tập về mảng
    Gửi bởi Lão Gia trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 14
    Bài viết cuối: 29-10-2008, 03:15 AM
  3. [ Solved ]Bài tập in ra các hình cần giúp đỡ
    Gửi bởi Lão Gia trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 20-10-2008, 04:20 PM
  4. [ Solved ]Ai giúp dùm bài tập cơ bản !
    Gửi bởi MinhPro88 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 35
    Bài viết cuối: 25-09-2008, 10:28 PM
  5. [ Solved ]Giúp em về đổi sang nhị phân
    Gửi bởi nqhoang86dn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 17-09-2008, 01:11 PM

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