Chuyển đổi loại rõ ràng
Đối với chuyển đổi kiểu rõ ràng, MQL5 hỗ trợ hai dạng ký hiệu: theo kiểu C và "chức năng". Kiểu C có cú pháp sau:
target t = (target)s;
Trong đó target là tên của kiểu target. Bất kỳ biểu thức nào cũng có thể là nguồn dữ liệu s
. Nếu bất kỳ thao tác nào được thực hiện trong đó, bạn phải đặt biểu thức trong dấu ngoặc đơn để chuyển đổi kiểu áp dụng cho toàn bộ biểu thức.
Một cú pháp "chức năng" thay thế trông như thế này:
target t = target(s);
Chúng ta hãy xem xét một vài ví dụ.
double w = 100.0, v = 7.0;
int p = (int)(w / v); // 14
2
Ở đây, kết quả của phép chia hai số thực được chuyển đổi rõ ràng thành kiểu int
. Do đó, lập trình viên xác nhận ý định loại bỏ phần phân số và trình biên dịch sẽ không đưa ra cảnh báo. Cần lưu ý rằng MQL5 có một nhóm các hàm để làm tròn số thực theo nhiều cách khác nhau (xem Hàm toán học ).
Ngược lại, nếu bạn muốn thực hiện một phép toán trên các số nguyên với kết quả là số thực, bạn cần áp dụng chuyển đổi kiểu cho các toán hạng (trong chính biểu thức):
int x = 100, y = 7;
double d = (double)x / y; // 14.28571428571429
2
TIP
Việc chuyển đổi một trong các toán hạng là đủ để tự động chuyển đổi phần còn lại sang cùng kiểu.
Nếu cần, bạn có thể thực hiện một số thao tác chuyển đổi kiểu tuần tự. Vì thao tác chuyển đổi là liên kết phải, các kiểu mục tiêu sẽ được áp dụng theo thứ tự từ phải sang trái. Trong ví dụ sau, chúng ta chuyển đổi thương số thành kiểu float
(chuyển đổi này cho phép biểu diễn giá trị nhỏ gọn hơn, ít ký tự hơn), sau đó thành string
. Nếu không có chuyển đổi rõ ràng thành string
, chúng ta sẽ nhận được cảnh báo trình biên dịch "chuyển đổi số thành chuỗi ngầm định".
Print("Result:" + (string)(float)(w / v)); // Result:14.28571
Đừng sử dụng chuyển đổi kiểu rõ ràng chỉ để tránh cảnh báo của trình biên dịch. Nếu không có cơ sở thực tế, bạn đang che giấu một lỗi tiềm ẩn trong chương trình.