NormalizeDouble

把浮点类型转变成指定精确度

double  NormalizeDouble(
   double  value,      // 标准化号码
   int     digits      // 小数点后的数字数
   );

参量

value

[in] 浮点类型值

digits

[in]  精确度模式,浮点数字 (0-8).

返回值

预先设置的双精度类型值

注释

待办订单止损数值,目标数值和开仓值的计算值一定根据精确度规范吗,该值可以通过 Digits()获得。

请注意,当使用Print()函数输出到日志时,标准数字可能包括比你想象的更多的小数位。例如:

   double a=76.671;             // 三个小数位的标准数字
   Print("Print(76.671)=",a);   // 输出为
   Print("DoubleToString(a,8)=",DoubleToString(a,8)); // 以预设精度输出

在程序端您将拥有以下信息:

 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
*/

另见so

DoubleToString真实型(双精度,浮点)类型减少