
Note that the formatting for `RealFloat` types is currently a bit different from that of C `printf(3)`, conforming instead to `showEFloat`, `showFFloat` and **`showGFloat`** (and their alternate versions `showFFloatAlt` and **`showGFloatAlt`**). This is hard to fix: the fixed versions would format in a backward-incompatible way. **In any case the Haskell behavior is generally more sensible than the C behavior.** A brief
#13682: When printf "%g" with trailing 0 number, decial point be printed. -------------------------------------+------------------------------------- Reporter: nakaji_dayo | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: libraries/base | Version: 8.0.1 Resolution: | Keywords: printf Operating System: MacOS X | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): Indeed, we currently note in the documentation that the identifiers for `RealFloat` types differs from how C treats them. Quote [http://git.haskell.org/ghc.git/blob/2316ee1c42d7f4dc229295a5b5426dde40944dc1... the docs], summary of some key differences:
* Haskell `printf` never uses the default "6-digit" precision used by C
* Haskell `printf` treats the "precision" specifier as indicating the number of digits after the decimal point. * Haskell `printf` prints the exponent of e-format numbers without a gratuitous plus sign, and with the minimum possible number of digits. * **Haskell `printf` will place a zero after a decimal point when
printf. possible.** (Emphasis is mine.) So the `showGFloat(Alt)` functions explain the difference in behavior. Note that you can prevent Haskell `printf` from printing out trailing decimal points by using `%.0g` instead of `%g`: {{{ λ> import Text.Printf λ> printf "%.0g\n" 2.0 2 }}} Is this explanation satisfactory? If so, feel free to close the ticket. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13682#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler