[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Remi Vanicat <remi.vanicat@g...> |
| Subject: | Re: [Caml-list] Printing floating point numbers & precision |
On Thu, 30 Sep 2004 12:52:00 -0400, mff <mff@research.att.com> wrote: > > Greetings, > > I have a question regarding the printing of floating point numbers. > Here's an example: > > lt-mff: /usr/bin/ocaml > Objective Caml version 3.07+2 > # max_float;; > - : float = 1.79769313486231571e+30 > > # Printf.sprintf "%e" max_float;; > - : string = "1.797693e+308" > > So using the default %e format to print a floating point number loses 11 digits > of precision. I could be more precise about the number of fractional digits: > > # Printf.sprintf "%.17e" max_float;; > - : string = "1.79769313486231571e+308" > > But this does not seem to work in general: > > # Printf.sprintf "%.17e" 12345.1;; > - : string = "1.23451000000000004e+04" > > I've combed the documentation to try to understand the relationship between > printing and precision (and accuracy!) but have come up empty handed. This is not a ocaml problem, this a problem with base 2 represention of decimal number : 1/10 is not representable exactly using standard ieee number, the more exact precicsion you could have is 0.100000004 (with may be some more 0 between the 1 and the 4). By the way it is a FAQ, and you could find dicsution about it int hte archive of this very mailing-list. ------------------- 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