long Calc= NormalizeDouble(Close[1],Digits)*MathPow(10,(Digits+1)*3-1)+ NormalizeDouble(High[1],Digits)*MathPow(10,(Digits+1)*2-1)+ NormalizeDouble(Low[1],Digits)*MathPow(10,(Digits+1)*1-1);
也就是说,数字161184的最后一部分--即分歧4个单位。
你的这个表达式的变体产生相同的值
long CalcX= NormalizeDouble(Close[1],Digits)*MathPow(10,(Digits+1)*3-1)+ NormalizeDouble(High[1],Digits)*MathPow(10,(Digits+1)*2-1)+ Low[1]/Point;
long Calc= NormalizeDouble(Close[1],Digits)*MathPow(10,(Digits+1)*3-1)+ NormalizeDouble(High[1],Digits)*MathPow(10,(Digits+1)*2-1)+ NormalizeDouble(Low[1],Digits)*MathPow(10,(Digits+1)*1-1);
也就是说,数字161184的最后一部分--即分歧4个单位。
你在这个表达式中的变体给出了相同的值
long CalcX= NormalizeDouble(Close[1],Digits)*MathPow(10,(Digits+1)*3-1)+ NormalizeDouble(High[1],Digits)*MathPow(10,(Digits+1)*2-1)+ Low[1]/Point;
知道是什么错误吗,如何解决?
像这样运行它。
/********************Script program start function*******************/ voidOnStart() { string i = DoubleToString(SymbolInfoDouble(_Symbol, SYMBOL_BID)/_Point, 0); Print(i); Print(SymbolInfoDouble(_Symbol, SYMBOL_BID)/_Point); }/*******************************************************************/
请告知解决四舍五入问题的方法!?
我需要摆脱小数点而没有余数--四舍五入和指数化并不能解决整个问题--我应该怎么做?
例如,它是1.44430,我需要144430。
部分代码--原样
NormalizeDouble(Low[1],Digits)*MathPow(10,(Digits+1)*1-1)
只要除以_点。
错误的结果打印,原来是161188(1.61188)你的方法161187的打印结果是1.6119(为什么在打印Low[1]时,如果有5个小数位,就会进行四舍五入?
但如果我们把问题复杂化。
long Calc=
NormalizeDouble(Close[1],Digits)*MathPow(10,(Digits+1)*3-1)+
NormalizeDouble(High[1],Digits)*MathPow(10,(Digits+1)*2-1)+
NormalizeDouble(Low[1],Digits)*MathPow(10,(Digits+1)*1-1);
也就是说,数字161184的最后一部分--即分歧4个单位。
你的这个表达式的变体产生相同的值
NormalizeDouble(Close[1],Digits)*MathPow(10,(Digits+1)*3-1)+
NormalizeDouble(High[1],Digits)*MathPow(10,(Digits+1)*2-1)+
Low[1]/Point;
知道是什么错误吗,如何解决?
错误的结果打印,原来是161188(1.61188),你的方法161187的打印结果是1.6119(为什么在打印Low[1]时,如果小数点后五位,它要向上取整?
但如果我们把问题复杂化。
long Calc=
NormalizeDouble(Close[1],Digits)*MathPow(10,(Digits+1)*3-1)+
NormalizeDouble(High[1],Digits)*MathPow(10,(Digits+1)*2-1)+
NormalizeDouble(Low[1],Digits)*MathPow(10,(Digits+1)*1-1);
也就是说,数字161184的最后一部分--即分歧4个单位。
你在这个表达式中的变体给出了相同的值
NormalizeDouble(Close[1],Digits)*MathPow(10,(Digits+1)*3-1)+
NormalizeDouble(High[1],Digits)*MathPow(10,(Digits+1)*2-1)+
Low[1]/Point;
知道是什么错误吗,如何解决?
void OnStart()
{
string i = DoubleToString(SymbolInfoDouble(_Symbol, SYMBOL_BID)/_Point, 0);
Print(i);
Print(SymbolInfoDouble(_Symbol, SYMBOL_BID)/_Point);
}/*******************************************************************/
像这样运行它。
void OnStart()
{
string i = DoubleToString(SymbolInfoDouble(_Symbol, SYMBOL_BID)/_Point, 0);
Print(i);
Print(SymbolInfoDouble(_Symbol, SYMBOL_BID)/_Point);
}/*******************************************************************/
是的,字符串变量得到了正确的数字(初步的),但是加入了零161188.00000000,我如何摆脱它们?
是的,字符串变量得到了正确的数字(初步的),但是加入了零161188.00000000,我如何摆脱它们?
我的代码中没有零。看看它是怎么写的。
谢谢你--我漏了一个零。
这就是建设。
DoubleToString(Close[1]/_Point,0)+
DoubleToString(High[1]/_Point,0)+
DoubleToString(Low[1]/_Point,0);
Print("CalcX=",CalcX);
现在我需要将这些数字分解回它们的组成部分。
当我试图将字符串 转换为数字 时,我再次得到错误的数字161184而不是161188。
Print("testX=",testX);
我也许应该剪断绳子,但如何才能做到最佳?
是的,字符串变量得到了正确的数字(初步的),但是加入了零161188.00000000,我如何摆脱它们 呢?
所以...给我看看这个图案。你怎么知道里面有什么?
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
谢谢你 - 我错过了零。
它想出了这样的结构
DoubleToString(Close[1]/_Point,0)+
DoubleToString(High[1]/_Point,0)+
DoubleToString(Low[1]/_Point,0);
Print("CalcX=",CalcX);
现在我需要将这些数字分解回它们的组成部分。
当我试图将字符串 转换为数字 时,我再次得到错误的数字161184,而不是161188。
Print("testX=",testX);
我也许应该剪断绳子,但如何才能做到最佳?
好吧,如果你有一个压倒性的愿望,把字符串转换回StringToDouble()数字,然后乘以_Point,并规范化为所需的数字,可能是_Digits。