StrToDouble,NormalizeDouble,从 double 类型中删除最后一个零
StrToDouble, NormalizeDouble, removes last zero from double type
我有这个string str = "1.52220";
我想以这个价格发送订单。
我需要在 Double 中转换它。
因此,当我使用 StrToDouble
将它转换为双精度时,它会删除最后一个 0 和 return 这个 1.5222 和 OrderSend
函数不接受这个值,它是 return 130 错误,因为小数点后的位数未归一化。
然后我尝试:NormalizeDouble(StrToDouble(str), digits)
但也没有用,没有添加最后一个零。
我正在用这个函数计算符号的数字:
int digits = (int)MarketInfo(symbol, MODE_DIGITS);
对于这个例子是 5。
double price = NormalizeDouble(StrToDouble(str), digits);
那么价格的值为 1.5222 而不是 1.52220。
有什么方法可以不删除最后一个零吗?或者问题出在其他地方?
或者我必须检查字符串 str 中的最后一个字符是否为零,然后用 1 替换它,这样值就可以了。
谢谢。
问题不在于最后一个零。
void OnTick()
{
int ticket=OrderSend(_Symbol,OP_BUYLIMIT,0.10,1.00,0,0.99,1.01);
printf("%i %s: ticket=%d, error=%d",__LINE__,__FILE__,ticket,_LastError);
ExpertRemove();
}
日志(最新最先):
2020.05.24 21:14:17.136 2020.05.01 00:00:00 tmpSOF EURUSD,M15: ExpertRemove function called
2020.05.24 21:14:17.136 2020.05.01 00:00:00 tmpSOF EURUSD,M15: 4 tmpSOF.mq4: ticket=1, error=0
2020.05.24 21:14:17.135 2020.05.01 00:00:00 tmpSOF EURUSD,M15: open #1 buy limit 0.10 EURUSD at 1.00000 sl: 0.99000 tp: 1.01000 ok
我有这个string str = "1.52220";
我想以这个价格发送订单。 我需要在 Double 中转换它。
因此,当我使用 StrToDouble
将它转换为双精度时,它会删除最后一个 0 和 return 这个 1.5222 和 OrderSend
函数不接受这个值,它是 return 130 错误,因为小数点后的位数未归一化。
然后我尝试:NormalizeDouble(StrToDouble(str), digits)
但也没有用,没有添加最后一个零。
我正在用这个函数计算符号的数字:
int digits = (int)MarketInfo(symbol, MODE_DIGITS);
对于这个例子是 5。
double price = NormalizeDouble(StrToDouble(str), digits);
那么价格的值为 1.5222 而不是 1.52220。
有什么方法可以不删除最后一个零吗?或者问题出在其他地方?
或者我必须检查字符串 str 中的最后一个字符是否为零,然后用 1 替换它,这样值就可以了。 谢谢。
问题不在于最后一个零。
void OnTick()
{
int ticket=OrderSend(_Symbol,OP_BUYLIMIT,0.10,1.00,0,0.99,1.01);
printf("%i %s: ticket=%d, error=%d",__LINE__,__FILE__,ticket,_LastError);
ExpertRemove();
}
日志(最新最先):
2020.05.24 21:14:17.136 2020.05.01 00:00:00 tmpSOF EURUSD,M15: ExpertRemove function called
2020.05.24 21:14:17.136 2020.05.01 00:00:00 tmpSOF EURUSD,M15: 4 tmpSOF.mq4: ticket=1, error=0
2020.05.24 21:14:17.135 2020.05.01 00:00:00 tmpSOF EURUSD,M15: open #1 buy limit 0.10 EURUSD at 1.00000 sl: 0.99000 tp: 1.01000 ok