Double Comparison

Back to topics list To post a new topic, please log in or register
avatar
16
abhishek_hpcs 2015.08.07 08:05
 

Hello

 

How we can compare double value ,when double value is nearly equal to zero?

Please Help. 

avatar
2017
gooly 2015.08.07 08:43 #
 

I am using things like this:

#define isZero(x) ((fabs(x) < 0.000000001)
avatar
13004
avatar
23
mideel 2015.08.07 16:57 #
 
just like that
avatar
313
JD4 2015.08.07 21:28 #
 
Standard numerical comparisons ( >, <, == (logical) <=, >=, and so on) should work.  If you are not getting enough precision with double, then I think you are stuck, because it is even higher precision than float, according to this page.
avatar
13004
WHRoeder 2015.08.09 14:35 #
 

The problem has nothing to do with precision (float vs double.)

The comparators work fine. The problem is with the equals. Is the equality important?

If you code Bid > trigger, is it OK for that to be true when Bid and Trigger are the same price? If you code Bid >= trigger, is it OK for it to be true when Bid is slightly below Trigger because of round off?

//        1        2        3        4        5        6        7        8        9       10
double t=1/10.0 + 1/10.0 + 1/10.0 + 1/10.0 + 1/10.0 + 1/10.0 + 1/10.0 + 1/10.0 + 1/10.0 + 1/10.0;
Print(t,"=1.0?",t==0); // 0.9999999999999999=1.0?false
If neither can be true, the equality is important, and you must understand The == operand. - MQL4 forum You can NOT use NormalizeDouble because that will not work on metals, (point != ticksize,) and NormalizeDouble uses Digits.
if( Bid - trigger >  0          ) // Bid >  trigger or possibly Bid == trigger
if( Bid > trigger               ) // equivalent.

if( Bid - trigger >  ticksize/2 ) // Bid >  trigger
if( Bid - trigger > -ticksize/2 ) // Bid >= trigger
Back to topics list  

To add comments, please log in or register