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