T
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!!
Đ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!!