有可能得到一个 "精确 "的数值吗? - 页 4

 
sanyooooook:

你指的是哪种功能?

第一个通过的还是NL?

NL功能。

如果是的话。

NL (2, 0.09 * 5); // 0.44

它给出了0.44,而不是0.45。

 
WePlexus:

NL功能。

如果是的话。

它给出了0.44,而不是0.45。


   Print(NL(DIGITS,0.45));
2014.10.04 13:13:03.089 normalize EURUSD,H4: 0.45
 
WePlexus:

NL功能。

如果是的话。

它给出了0.44,而不是0.45。

这是因为。MathFloor(value/step)=44

输入是44.9999999999999999,这个函数从底部返回最接近的整数。

为什么:值/步(0.45/0.01)=44.99999999999999不是我的问题 )

 
sanyooooook:

是来自于以下事实。MathFloor(value/step)=44

输入值为44.99999999999999,该函数从底部返回最接近的整数。

为什么:值/步(0.45*100)=44.99999999999999不是我的问题)。

谢谢你。:)
 
WePlexus:
谢谢你。:)
纠正了帖子中的错误
 
WePlexus:
谢谢。:)

所以你的函数更正确 )

顺便说一下,在这种情况下,除了我的函数外,所有函数都给出了0.45 ))

 
这意味着在使用一个函数之前,必须对输入数据进行检查,并根据哪个数字选择一个或另一个函数)
 
sanyooooook:

所以你的函数是比较正确的 )

顺便说一下,在这种情况下,除了我的函数之外,所有的函数都给出了0.45 ))

好吧,Sanyok,你是个骗子。

我的功能。

//double d=0.019999999999999999;
double d=0.09*5;
double e=(int)(d*100)/100.0;
Print("e=",e);
=0.44
 
abolk:

我的功能

是=0.44。
是的,但计算器说0.09*5=0.45。:)
 
WePlexus:
对,计算器里的结果是0.45。:)

对,我一开始没注意。