在MT4中通过NormalizeDouble对数字进行四舍五入 - 页 12

 
lilita bogachkova:
那么你应该写信给服务台说他们发明了这样一个额外的函数MathCeil():)
这只是不同,它并没有给我带来多大困扰 :)
 
Алексей Тарабанов:
int A = double B + 0.5
他说的没错。"首先,在小数上加0.5,然后切断 小数部分,将结果四舍五入为整数。", 但MQ给了我们MathCeil() 以省去麻烦,MathCeil()返回次 整数值, 不是四舍五入
void OnStart()
  {
   ushort  Characters_delete=14;
   for(int i=0;i<=Characters_delete;i++)
     {
      double v1=i+0.999999999999999;

      int v2=v1+0.5;
      Print("v1 = ",i," = ",DoubleToString(v2,2));
     }
  }
 
Vasyl Nosal:
五,然后。
什么是5?对这样的数字进行归一化,会把所有的9变成0,所以归一化后再抛弃会得到错误的结果。
 
lilita bogachkova:
他说的没错。"首先,将0.5加到小数上,然后将 小数部分从结果中切掉,并将结果四舍五入为整数。", 但MQ给了我们MathCeil(),所以我们不必麻烦。
谢谢,Sunny,但MathCeil只对双倍数起作用:包括输入和输出 :)
 
Алексей Тарабанов:
谢谢,Sunny,但MathCeil只对双倍数起作用:包括输入和输出 :)
解决了:int A = (int)MathCeil(double B)。
 
lilita bogachkova:
被解决:int A = (int)MathCeil(double B)。
对不起:int A =(int)MathCeil(double B+0.5)
 
Алексей Тарабанов:
对不起:int A =(int)MathCeil(double B+0.5)
不是一个:解决了:int A =(int)MathCeil(double B)。
 
lilita bogachkova:
不是一个:解决了:int A =(int)MathCeil(double B)。
尝试:int A =MathCeil(2.6)
 
Алексей Тарабанов:
尝试:int A = MathCeil(2.4)

int A =MathCeil(2.4)=3

int A = MathCeil(2.4+0.5) =3

int A = MathCeil(2.6+0.5) =4

int A = MathCeil(2.6) =3

 
lilita bogachkova:

int A = MathCeil(2.4)=3

int A = MathCeil(2.4+0.5) =3

int A = MathCeil(2.6+0.5) =4

恶魔迷惑了...当然,是2.6。这些数字很奇怪...