summaryrefslogtreecommitdiff
path: root/stdlib/camlinternalFormat.ml
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>2014-12-24 19:58:14 +0000
committerDamien Doligez <damien.doligez-inria.fr>2014-12-24 19:58:14 +0000
commit4b183eb68629d95fa727d8a105445ba44277f4ec (patch)
treee00b054a3c8aeba06e0579163dbc90e49a1b2025 /stdlib/camlinternalFormat.ml
parent4403ab3bb50fa2b91c457283978779192048dca8 (diff)
downloadocaml-4b183eb68629d95fa727d8a105445ba44277f4ec.tar.gz
PR#6727: Printf.sprintf "%F" misbehavior
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@15746 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib/camlinternalFormat.ml')
-rw-r--r--stdlib/camlinternalFormat.ml19
1 files changed, 10 insertions, 9 deletions
diff --git a/stdlib/camlinternalFormat.ml b/stdlib/camlinternalFormat.ml
index 77b539161f..e95e54d068 100644
--- a/stdlib/camlinternalFormat.ml
+++ b/stdlib/camlinternalFormat.ml
@@ -1332,15 +1332,16 @@ let format_of_iconvn = function
(* Generate the format_float first argument form a float_conv. *)
let format_of_fconv fconv prec =
- let prec = abs prec in
- let symb = if fconv = Float_F then 'g' else char_of_fconv fconv in
- let buf = buffer_create 16 in
- buffer_add_char buf '%';
- bprint_fconv_flag buf fconv;
- buffer_add_char buf '.';
- buffer_add_string buf (string_of_int prec);
- buffer_add_char buf symb;
- buffer_contents buf
+ if fconv = Float_F then "%.12g" else
+ let prec = abs prec in
+ let symb = char_of_fconv fconv in
+ let buf = buffer_create 16 in
+ buffer_add_char buf '%';
+ bprint_fconv_flag buf fconv;
+ buffer_add_char buf '.';
+ buffer_add_string buf (string_of_int prec);
+ buffer_add_char buf symb;
+ buffer_contents buf
(* Convert an integer to a string according to a conversion. *)
let convert_int iconv n = format_int (format_of_iconv iconv) n