EA编程入门:MQL数据类型转换解析
在MQL语言中,目前仅支持隐式类型转换,系统会自动完成部分数据类型的转换操作。
int(包括bool、color、datetime)可以转换为double或string类型。
double类型可以转换为string类型,IBKR除此之外,其他数据类型之间的转换是不被允许的。例如:
int i = 1 / 2; //这里不会进行类型转换,结果为0而不是0.5,因为分子和分母均为整型,所以按照整型计算。
int i = 1 / 2.0; //此表达式中,分母为double类型,因此结果会转换为double,计算值为0.5。但由于变量i定义为int型,实际存储时取整,结果为0。
double d = 1.0 / 1.0; //分子分母均为double,无需转换,计算结果为1.0。
double d = 1 / 2.0; //分母为double,分子会自动转换为double(即1.0),IBKR结果即为0.5。
double d = 1 / 2; //分子分母都是整型,计算先得整型0,随后目标变量为double,自动将0转换为0.0。
string s = 1.0 / 8; //由于分母中有double,非double部分会转为double,结果为0.12500000,目标类型是字符串,因此最终为字符串"0.12500000",注意包含双引号。
string s = NULL; //结果为"0",因为NULL的数值为0。
string s = "abc" + 123; //结果为"abc123",整数123被自动转换为字符串。
需要特别留意的是,string类型不能隐式转换为int或double,因此以下写法是错误的:
int i = "abc";
若要将字符串"123"转换为整数123,需要使用专门的转换函数,这部分内容将在后续课程中详细介绍。