<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE message PUBLIC
  "-//MLarc//DTD MLarc output files//EN"
  "../../mlarc.dtd"[
  <!ATTLIST message
    listname CDATA #REQUIRED
    title CDATA #REQUIRED
  >
]>

  <?xml-stylesheet href="../../mlarc.xsl" type="text/xsl"?>


<message 
  url="2002/12/560c45075f7edea334c281d5649ef2ac"
  from="Damien Doligez &lt;damien.doligez@i...&gt;"
  author="Damien Doligez"
  date="2002-12-10T13:09:40"
  subject="Re: [Caml-list] float pretty-printing precision, once more."
  prev="2002/12/88abaa55b2ba3b03d913061bd8642afb"
  next="2002/12/78f7eb64b20320970621cfe5b9407fa8"
  prev-in-thread="2002/12/197abbf7c374b28868a0af7fcee97f38"
  next-in-thread="2002/12/df3aadefe9a8021d30aa32f5dcc94da0"
  prev-thread="2002/12/4f26c91200b871153ac571f4e71c7d1f"
  next-thread="2002/12/b842fa0bde343ece5699d91c444d6e07"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="[Caml-list] float pretty-printing precision, once more.">
<msg 
  url="2002/12/303524700573103127c46d2209d89f49"
  from="jeanmarc.eber@l..."
  author="jeanmarc.eber@l..."
  date="2002-12-09T23:24:23"
  subject="[Caml-list] float pretty-printing precision, once more.">
<msg 
  url="2002/12/3cb94c391a4d8d5c79e7a099c28800da"
  from="Yaron M. Minsky &lt;yminsky@C...&gt;"
  author="Yaron M. Minsky"
  date="2002-12-09T23:48:55"
  subject="Re: [Caml-list] float pretty-printing precision, once more.">
</msg>
<msg 
  url="2002/12/167a6c6cd1366f96e94bab06a3535858"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2002-12-10T00:00:02"
  subject="Re: [Caml-list] float pretty-printing precision, once more.">
</msg>
<msg 
  url="2002/12/a35e9a667edfd52c36feaaab51a66de6"
  from="David Chase &lt;chase@w...&gt;"
  author="David Chase"
  date="2002-12-10T02:14:16"
  subject="Re: [Caml-list] float pretty-printing precision, once more.">
</msg>
<msg 
  url="2002/12/197abbf7c374b28868a0af7fcee97f38"
  from="Xavier Leroy &lt;xavier.leroy@i...&gt;"
  author="Xavier Leroy"
  date="2002-12-10T09:49:32"
  subject="Re: [Caml-list] float pretty-printing precision, once more.">
</msg>
<msg 
  url="2002/12/560c45075f7edea334c281d5649ef2ac"
  from="Damien Doligez &lt;damien.doligez@i...&gt;"
  author="Damien Doligez"
  date="2002-12-10T13:09:40"
  subject="Re: [Caml-list] float pretty-printing precision, once more.">
<msg 
  url="2002/12/df3aadefe9a8021d30aa32f5dcc94da0"
  from="Jacques Carette &lt;carette@m...&gt;"
  author="Jacques Carette"
  date="2002-12-10T15:37:20"
  subject="RE: [Caml-list] float pretty-printing precision, once more.">
</msg>
<msg 
  url="2002/12/2740972965db19b54afe531bdddfb74d"
  from="Xavier Leroy &lt;xavier.leroy@i...&gt;"
  author="Xavier Leroy"
  date="2002-12-10T15:47:23"
  subject="Re: [Caml-list] float pretty-printing precision, once more.">
<msg 
  url="2002/12/2813f8e8be115b0bad1bc16b1e41b744"
  from="David Chase &lt;chase@w...&gt;"
  author="David Chase"
  date="2002-12-11T04:04:00"
  subject="Re: [Caml-list] float pretty-printing precision, once more.">
<msg 
  url="2002/12/4148c2e4e503a36460efef0369cc042f"
  from="David Chase &lt;chase@w...&gt;"
  author="David Chase"
  date="2002-12-12T01:41:48"
  subject="Re: [Caml-list] float pretty-printing precision, once more.">
</msg>
</msg>
</msg>
</msg>
</msg>
</thread>

<contents>
On Tuesday, Dec 10, 2002, at 00:04 Europe/Paris, 
jeanmarc.eber@lexifi.com wrote:

&gt; caml 3.06+1:
[string_of_float loses precision on floating-point numbers]

In the current working version (3.06+18), the precision used by
string_of_float has been increased to 17 digits.  I *think* this
is enough to represent all the double-precision floating-point
numbers:

           Objective Caml version 3.06+18 (2002-11-07)

   # let f = 1. /. 86400.;;
   val f : float = 1.1574074074074073e-05
   # let s = string_of_float f;;
   val s : string = "1.1574074074074073e-05"
   # let f1 = float_of_string s;;
   val f1 : float = 1.1574074074074073e-05
   # f1 = f;;
   - : bool = true
   # f1 -. f;;
   - : float = 0.

However, it has the unfortunate side-effect of revealing this
awful truth about FP numbers: many "interesting" numbers are
impossible to represent in floating-point.  For example:

   # 0.1;;
   - : float = 0.10000000000000001

There is no floating-point number equal to 0.1 and the
best approximation you can get is 0.10000000000000001.
I expect this will quickly become a much-used FAQ entry...

I don't know if we will keep this change for the next release
of O'Caml.  But you can always use (Printf.sprintf "%.17g")
instead of string_of_float, and you'll get all the digits,
significant or not.

-- Damien

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners

</contents>

</message>

