1. 浮点数在计算机中是无法精确表示的.
2. 你要输出指定精度,输出时指定5位小数位,比如 Print(DoubleToString(x,5));
printf(DoubleToString( 0.9056999999999999 ,5)),输出结果是“0.90570”的字符串, 想要的结果是double类型,不是string类型,尝试了用printf(StringToDouble(DoubleToString( 0.9056999999999999 ,5))), 输出结果是
0.9056999999999999 的双精度数,然后用自定义函数
//+------------------------------------------------------------------+
//|双精度小数截位()函数 |
//+------------------------------------------------------------------+
double DoubleRound(double nu,int dig)
{
return( StringToDouble( DoubleToString(nu,dig) ) );
}
printf(DoubleRound( 0.9056999999999999 ,5 ) ),
输出结果是 0.9056999999999999
这个现像只有是在截取位数值为9时会出现。
NormalizeDouble ( 0.9056999999999999,5)意想是得到 0.9057,事实得到的是 0.9056999999999999.是不是MQL4的解释器的BUG?试过用别的编程语言写了DLL文件导入函数实现相同功能,结果,还是 0.9056999999999999