跳至内容

NormalizeDouble

NormalizeDouble

将浮点数四舍五入到指定的精度。

double  NormalizeDouble(
   double  value,      // normalized number
   int     digits      // number of digits after decimal point
   );

参数

value

[in] 具有浮点数的值。

digits

[in] 精度格式,小数点后的位数(0-8)。

返回值

具有预设精度的double类型的值。

注意

StopLoss、TakeProfit的计算值以及待定订单的开价值必须用该精度进行归一化,其值可以通过Digits()获得。

请注意,当使用Print()函数输出到日志时,归一化的数字可能包含比预期更多的小数位。例如:

double a=76.671;             // A normalized number with three decimal places
   Print("Print(76.671)=",a);   // Output as is
   Print("DoubleToString(a,8)=",DoubleToString(a,8)); // Output with a preset accuracy

在终端中你将得到以下结果:

| DoubleToString(a,8)=76.67100000

Print(76.671)=76.67100000000001 |

示例:

double pi=M_PI;
   Print("pi = ",DoubleToString(pi,16));

   double pi_3=NormalizeDouble(M_PI,3);
   Print("NormalizeDouble(pi,3) = ",DoubleToString(pi_3,16))
   ;
   double pi_8=NormalizeDouble(M_PI,8);
   Print("NormalizeDouble(pi,8) = ",DoubleToString(pi_8,16));

   double pi_0=NormalizeDouble(M_PI,0);
   Print("NormalizeDouble(pi,0) = ",DoubleToString(pi_0,16));
/*
   Result:
   pi= 3.1415926535897931
   NormalizeDouble(pi,3)= 3.1419999999999999
   NormalizeDouble(pi,8)= 3.1415926499999998
   NormalizeDouble(pi,0)= 3.0000000000000000
*/

另请参阅

DoubleToString, 实数类型(double, float), 类型转换,

最后更新于