Excel limitations???

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi thanhvo31, 12 Tháng mười 2005.

2,086 lượt xem

  1. thanhvo31

    thanhvo31 Thành viên sơ cấp

    Bài viết:
    36
    Đã được thích:
    0
    Nơi ở:
    Haiphong
    Tôi đang dùng VBA viết một số ứng dụng nhưng khi biến có độ chính xác > 15 số thập phân thì chịu.
    Điều này xác nhận trong Excel Specìication
    Feature Maximum limit
    Number precision 15 digits
    Largest number allowed to be typed into a cell 9.99999999999999E307
    Largest allowed positive number 1.79769313486231E308
    Smallest allowed negative number -2.2250738585072E-308
    Smallest allowed positive number 2.229E-308
    Largest allowed negative number -1E-307

    Nhưng trong VBA thì lại dẫn là
    Data type Storage size Range
    Byte 1 byte 0 to 255
    Boolean 2 bytes True or False
    Integer 2 bytes -32,768 to 32,767
    Long
    (long integer) 4 bytes -2,147,483,648 to 2,147,483,647
    Single
    (single-precision floating-point) 4 bytes -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values
    Double
    (double-precision floating-point) 8 bytes -1.79769313486231E308 to
    -4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
    Currency
    (scaled integer) 8 bytes -922,337,203,685,477.5808 to 922,337,203,685,477.5807
    Decimal 14 bytes +/-79,228,162,514,264,337,593,543,950,335 with no decimal point;
    +/-7.9228162514264337593543950335 with 28 places to the right of the decimal; smallest non-zero number is
    +/-0.0000000000000000000000000001
    Date 8 bytes January 1, 100 to December 31, 9999
    ....
    Như vậy ngay cả khi khai báo data dạng single hay double thì cũng không đạt đc độ chính xác.

    Vậy muốn tính toán chính xác thì hết cách? Buộc phải qua Java, C hay thậm chí chỉ Javacript thì cũng tính ngon.

    Mong đc các cao thủ chỉ giáo!!
     
    #1
  2. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    Goooogle
    Excel làm tròn số không đúng?

    Còn điều này nữa, lúc trước tôi đã gặp một trường hợp khi tổng hợp dữ liệu trên Excel 2000, lẽ ra kết quả phải cho về 0, Excel lại cho về 0.000001
    Như vậy trong quá trình tính toán những số rất nhỏ, Excel tính... sai mất. Điều này là sao thế hay MS chỉ giới hạn cho Excel tính như vậy thôi để tăng tốc độ tính toán, vì các ứng dụng dùng Excel không cần độ chính xác cao?
     
    #2
  3. the7habitsman

    the7habitsman Thành viên sơ cấp

    Bài viết:
    89
    Đã được thích:
    0
    Nơi ở:
    Hà nội
    Có lẽ các phép toán những số...dài như thế này (xem hình) thì ko ngôn ngữ nào thể hiện được đâu. Phải làm = thuật toán thôi (chuyển sang dạng String ấy, ngày xa xưa học Pascal cũng phải làm cái bài tập này rồi):

    [​IMG]
     
    #3
  4. the7habitsman

    the7habitsman Thành viên sơ cấp

    Bài viết:
    89
    Đã được thích:
    0
    Nơi ở:
    Hà nội
    Please test this code to see the results (b(i) is True Or False?):

    Dim odd_error As Double
    odd_error = 3.3 - 3.1
    b1 = (odd_error <= 0.2)
    Debug.Print "b1 = " & b1
    b3 = (odd_error = 0.2)
    Debug.Print "b3 = " & b3
    odd_error = 5.3 - 5.1
    b2 = (odd_error <= 0.2)
    Debug.Print "b2 = " & b2
    b4 = (odd_error = 0.2)
    Debug.Print "b4 = " & b4

    odd_error = Val(5 - 4.9)
    b3 = (odd_error = 0.1)
    Debug.Print "b3 = " & b3

    Very strange is it?
     
    #4

Chia sẻ trang này