[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: Unable to perform a simple operation



PureBytes Links

Trading Reference Links

Wrong. Arithmetic is a property of your COMPUTER (namely IEEE754 standard implemented in FPU on your processor), not the software.
Metastock would give you exactly SAME answer.

Enter 0.001 in the IEEE calculator
http://babbage.cs.qc.edu/IEEE-754/Decimal.html
and press "not rounded" and you will see the output (single prcesiison 32 bit)

As 1/3 can't be represented in decimal system with 100% accurracy the same goes for any fraction not being power of 2
in binary system.

You should output your numbers with 4 decimals if source is 4 decimals:

ans1 = 1.3941 - 1.3931;
ans2 = ((1.3941*1000)-(1.3931*1000)) / 1000;
_TRACE("Ans1 = " + WriteVal( ans1, 1.4 ) );
_TRACE("Ans2 = " + WriteVal( ans1, 1.4 ) );


Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "paul_79c" <paulyes@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Tuesday, July 14, 2009 6:20 PM
Subject: [amibroker] Re: Unable to perform a simple operation


> Julian your answer is cute but really not helpful. I was using Metastock before amibroker and even tough up until now i did not
> find anything that Metastock could do better than Amibroker, it seems that this is the first thing. Metastock could give ALWAYS
> the right answer to this simple subraction. Anyone else have a answer? come on people its a subtraction...Metastock could do this,
> is really no way to get Amibroker give the right answer?
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Julian" <juliangoodsell@xxx> wrote:
>>
>> Yes, floating point calculations.
>>
>> http://docs.sun.com/source/806-3568/ncg_goldberg.html
>> Bring a pillow. :)
>>
>>
>> You could do:
>>
>> ans1 = 1.3941 - 1.3931;
>> ans2 = ((1.3941*1000)-(1.3931*1000)) / 1000;
>> _TRACE("Ans1 = " + ans1);
>> _TRACE("Ans2 = " + ans2);
>>
>> though I don't know for sure that there aren't any precision pitfalls with this technique.
>>
>> Jules.
>>
>> --- In amibroker@xxxxxxxxxxxxxxx, "paul_79c" <paulyes@> wrote:
>> >
>> > Does anyone know why Amibroker is unable to give the correct answer to this:
>> >
>> > fh = fopen( "C:/Amibroker/"+Name()+"1.txt", "r");
>> > if( fh!=0)
>> > {
>> > k=StrToNum(fgets(fh));
>> > fclose(fh);
>> > }
>> > fh1 = fopen( "C:/Amibroker/"+Name()+"spread.txt", "r");
>> > if( fh1!=0 )
>> > {
>> > k1=Prec(StrToNum(fgets(fh1)),4);
>> > fclose(fh1);
>> > }
>> > a=Prec(abs((LastValue(C)+k1)-k)+0.0001,4);
>> >
>> > I`m using this code on EURUSD trying to perform a simple subtraction but Amibroker is unable to give a precise answer, like for
>> > example sometimes 1.3941-1.3931=0.0009 sometimes =0.0010(correct) sometimes 0.0008 or other close value.  dont get it its a
>> > simple subtraction, obviously has something to do with floating point does someone know what to do to get the right answer from
>> > amibroker?
>> >
>>
>
>
>
>
> ------------------------------------
>
> **** IMPORTANT PLEASE READ ****
> This group is for the discussion between users only.
> This is *NOT* technical support channel.
>
> TO GET TECHNICAL SUPPORT send an e-mail directly to
> SUPPORT {at} amibroker.com
>
> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> http://www.amibroker.com/feedback/
> (submissions sent via other channels won't be considered)
>
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
>
> Yahoo! Groups Links
>
>
>



------------------------------------

**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to 
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/