Vấn đề với hàm LOG() trong CCS

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • bxngoc
    Moderator
    • Sep 2005
    • 802

    #1

    Vấn đề với hàm LOG() trong CCS

    Các bác cho em hỏi CCS có bị lỗi gì không mà khi em dùng hàm log() tính ra kết quả trật lất
    Log(8788) ==> - 24.55 (sai)

    Trong khi đó nếu em dùng mikroC hoặc tính bằng Excel đều ra kết quả là: 9.081255175 (đúng)

    Version của CCS em đang xài là 4.023 và code viết con PIC18f2550.

    Tính dùng CCS để tận dụng cái thư viện giao tiếp USB bằng CDC của nó mà tính toán kiểu này oải quá. mikroC viết sao chạy vậy chỉ tội chưa có thư viện CDC.

    Thank you.
    “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds
  • itx
    Moderator
    • Feb 2008
    • 1365

    #2
    Cài thêm "errno.h" vào để xem lỗi là ở đâu. Cách sử dụng log( )
    , errno.h rất chi tiết trong help của ccs

    Function:
    Computes the natural logarithm of the float x. If the argument is less than or equal to zero or too large, the behavior is undefined.



    Note on error handling:

    "errno.h" is included then the domain and range errors are stored in the errno variable. The user can check the errno to see if an error has occurred and print the error using the perror function.



    Domain error occurs in the following cases:

    · log: when the argument is negative
    Từ chối trách nhiệm:
    Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
    Blog: http://mritx.blogspot.com

    Comment

    • bxngoc
      Moderator
      • Sep 2005
      • 802

      #3
      Thanks bác itx. Đêm qua em đã thêm errno.h để kiểm tra và errno luôn bằng 0, có lúc kết quả Log(8788) ra số âm, có lúc ra khoảng 80 (sai bét)
      “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

      Comment

      • itx
        Moderator
        • Feb 2008
        • 1365

        #4
        Nguyên văn bởi bxngoc Xem bài viết
        Thanks bác itx. Đêm qua em đã thêm errno.h để kiểm tra và errno luôn bằng 0, có lúc kết quả Log(8788) ra số âm, có lúc ra khoảng 80 (sai bét)
        =========>
        if the argument is less than or equal to zero or too large, the behavior is undefined.
        Từ chối trách nhiệm:
        Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
        Blog: http://mritx.blogspot.com

        Comment

        • bxngoc
          Moderator
          • Sep 2005
          • 802

          #5
          Google một hồi cũng ra: log(A*B) = log(A) + log(B). Trời ơi sao mình dốt toán thế nhỉ
          ==> Log(8788) = Log(87.88) + Log(100)

          Để tối về thử lại coi thằng CCS mần ăn làm răng.

          Thanks bác itx
          “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

          Comment

          • bxngoc
            Moderator
            • Sep 2005
            • 802

            #6
            Tình hình vẫn không khả quan hơn. Dù chia nhỏ giá trị cho 100, 10 để tính log nhưng vẫn ra giá trị âm. Chạy mô phỏng trên Proteus và trên board thực đều giống nhau.
            Trong khi đó nếu biên dịch bằng HT-PIC, MikroC hoặc tính bằng Excel đều ra kết quả đúng.
            Không biết bác nào có dùng CCS version khác 4.023 biên dịch thử và chạy thử giùm em xem hàm Log(8788) hoặc Log(87.88) + Log(100) có ra 9.081255175 không?
            “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

            Comment

            • itx
              Moderator
              • Feb 2008
              • 1365

              #7
              Up lên cái code ccs lỗi xem sao? thường thì ccs không bị lỗi này, chủ yếu là do thuật giải người dùng thế nào.
              Từ chối trách nhiệm:
              Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
              Blog: http://mritx.blogspot.com

              Comment

              • o0DK0o
                Thành viên mới
                • Mar 2010
                • 1

                #8
                Bạn up code lên đi.trước làm với hàm log() suốt mà có thấy lỗi gì đâu.

                Comment

                Về tác giả

                Collapse

                bxngoc Nothing to reveal Tìm hiểu thêm về bxngoc

                Bài viết mới nhất

                Collapse

                Đang tải...