[erlang-questions] erlang float comparison
Angel J. Alvarez Miguel
clist@REDACTED
Mon May 14 09:41:01 CEST 2012
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120514/efe5fffb/attachment.htm>
More information about the erlang-questions
mailing list