The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.
VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.
Các loại giữ số có vị trí thập phân – float, double
Những kiểu dữ liệu này thường được gọi là kiểu dữ liệu dấu phẩy động. Các số được gọi là số dấu phẩy động.
float fvar = 50,15; dvar kép = 50,0;
So sánh kiểu dữ liệu dấu phẩy động – float và double
Sự khác biệt giữa kiểu dữ liệu float và double nằm ở độ chính xác của # vị trí thập phân.
Dựa trên VexOS – ARM 7 spec, float có thể xử lý 6 hoặc 7 vị trí và double có thể xử lý 15 hoặc 16 vị trí.
float: trong V5os hiện tại, bộ điều khiển dường như cho phép độ chính xác lên tới 8 chữ số thập phân.
ví dụ
phao fvar1 = 1.12345670; float fvar2 = 1.12345678;
fval1 khác với fvar2,
vs
phao fvar1 = 1.123456780; float fvar2 = 1.123456781;
fval1 sẽ được đánh giá giống như fvar2.
double: cho phép độ chính xác lên tới 17 chữ số thập phân.
ví dụ
đôi dvar1 = 1.12345678912345678; đôi dvar2 = 1.12345678912345670;
dval1 khác với dvar2,
vs
đôi dvar1 = 1.123456789123456789; đôi dvar2 = 1.123456789123456780;
dval1 sẽ được đánh giá giống như dvar2.
Không sử dụng "double" trừ khi bạn cần độ chính xác cao
Có hai lý do bạn không nên sử dụng "double" trừ khi bạn cần độ chính xác cao:
- Nó chiếm loại float 2X.
- Nó chiếm sức mạnh xử lý cao hơn nhiều.
Dựa trên thông số kỹ thuật VexOS – ARM 7, một float có thể thực hiện 6 hoặc 7 vị trí và một double có thể xử lý 15 hoặc 16 vị trí. Trong cả hai trường hợp, bạn không nên dựa vào độ chính xác của các chữ số cuối cùng trong double hoặc float. Nó được lưu trữ rất khác với việc lưu trữ “int” do một thứ gọi là “tính toán dấu phẩy động” (nằm ngoài phạm vi của bài viết này).
Do đó, bạn có thể mất độ chính xác ở một vài chữ số thập phân cuối cùng.
Hoạt động trên double khá tốn kém so với float và cao hơn nhiều so với "số nguyên" do một thứ gọi là tính toán dấu phẩy động.
Dựa trên tiêu chuẩn IEEE, thông tin sau nằm trong phạm vi đáng tin cậy hơn.
Kiểu | Giá trị dương nhỏ nhất | Giá trị dương lớn nhất | # độ chính xác |
trôi nổi | 10 -38 x 1,17549 | 10 38 x 3,40282 | 6 chữ số |
gấp đôi | 10 -308 hoặc 2,22507 | 10 308 x 1,79769 | 15 chữ số |
Bạn có thể trao đổi các kiểu dữ liệu nguyên thủy không? - Vật đúc
Có thể trao đổi các kiểu dữ liệu. Kỹ thuật này được gọi là “Đúc”. Mặc dù truyền là một cách khá phổ biến nhưng chỉ thực hiện điều đó nếu cần thiết.
Một trong những cách thực hành phổ biến nhất là trao đổi char và int.
Điều này là do cả hai đều biểu thị các giá trị số nguyên với một ngoại lệ:
- “int” chứa 4 byte (hoặc 8 byte trong một số trình biên dịch)
- “char” chỉ chứa 1 byte.
Vì vậy, ví dụ
char aVal = 100; int iVal = aVal; // truyền ngầm
hoặc
int iVal = (char) aVal; // truyền rõ ràng.
Thận trọng khi cắt ngắn ngầm:
ví dụ
Một cách phổ biến khác là trao đổi int và float
phao fVal = 5,486; phân số float = fVal - (int)fVal; // đúng là: 5.486 - 5
Thận trọng khi cắt ngắn ngầm:
ví dụ
int iVal = 50; float fVal = iVal/100;
bây giờ fVal = 0,0, KHÔNG phải 0,5.
Hoàn toàn có thể tận dụng việc cắt bớt ngầm định, đây thường là một phần quan trọng của hoạt động trong một số trường hợp. Tuy nhiên, bạn cần đảm bảo rằng bạn đang sử dụng kỹ thuật này theo đúng thiết kế.
Nếu bạn không muốn việc cắt ngắn ngầm diễn ra, bạn cần thực hiện truyền rõ ràng:
- truyền ngầm:
float fVal = iVal / 100.0;
- truyền rõ ràng:
float fVal = (float) iVal / 100