[erlang-questions] erlang float comparison
Angel J. Alvarez Miguel
clist@REDACTED
Mon May 14 10:47:19 CEST 2012
Well we just picked the wrong example
that's is the problem
sinosuke@REDACTED:~> erl
Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:4:4] [async-threads:0]
[hipe] [kernel-poll:false]
[QuickCheck] [PropEr] [Erl0MQ]
Eshell V5.9.1 (abort with ^G)
1> 1.000000000000000002 > 1.0.
false
On Lunes, 14 de Mayo de 2012 09:50:57 usted escribió:
> 1> 0.99999998 < 1.000000.
> true
> 2> 1.99999976 < 1.99999988.
> true
>
> What's the problem?
>
> On Mon, May 14, 2012 at 9:41 AM, Angel J. Alvarez Miguel
<clist@REDACTED>wrote:
> > **
> >
> >
> > Hi guys
> >
> >
> >
> > I need to compare two floats something like 0.99999998... vs 1.000000
> >
> > and we came across accuracy problems when testing dihedral angles on a
> > molecule...
> >
> >
> >
> > so we read
> > http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
> >
> > and wanted to implement something like:
> >
> >
> >
> > if (*(int*)&f1 < *(int*)&f2)...
> >
> >
> >
> > when ef1 and f2 are floats... (f1 about 0.9999899.. and f2=1.0
> >
> >
> >
> > is think we should start with...
> >
> > <<Padding:16,Myint:64>> = term_to_binary(1.9999976,[{minor_version,1}]).
> >
> > and let Padding swallow the external format and tag while Myint gets the
> > ieee754 float
> >
> >
> >
> > But MyInt = 4611686017346523993 instead of 1073741822
> >
> > these conversion should follow ieee754 and being lexicografic ordered
> >
> > but ...
> >
> > term_to_binary(1.99999976,[{minor_version,1}]).
> >
> > <<131,70,63,255,255,255,191,147,83,89>>
> >
> > term_to_binary(1.99999988,[{minor_version,1}]).
> >
> > <<131,70,63,255,255,255,223,201,169,173>>
> >
> > doesnt seem to be the same thatn you spect to see after reading that
> > page...
> >
> > ..What im doing wrong....?
> >
> > ieee754 layout....
> >
> > +1.99999976
> >
> > 0x3FFFFFFE
> >
> > 1073741822
> >
> > +1.99999988
> >
> > 0x3FFFFFFF
> >
> > 1073741823
> >
> > +2.00000000
> >
> > 0x40000000
> >
> > 1073741824
> >
> > +2.00000024
> >
> > 0x40000001
> >
> > 1073741825
> >
> > +2.00000048
> >
> > 0x40000002
> >
> > 1073741826
> >
> > Thanks!..
> >
> > /Angel
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questions@REDACTED
> > http://erlang.org/mailman/listinfo/erlang-questions
More information about the erlang-questions
mailing list