http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48906
--- Comment #6 from Thomas Henlich <thenlich at users dot sourceforge.net> 2011-05-19 08:05:32 UTC --- (In reply to comment #5) As a general rule, d specifies the number of significant digits in the result, i.e. the number of digits counting from the first non-zero digit. So in the example all numbers should be formatted with 2 significant digits, i.e. 2 decimal digits if the value rounded to 2 significant digits is smaller than 1, and 1 decimal digit if the value rounded to 2 significant digits is larger than or equal to 1. > implicit none > integer, parameter :: RT = 8 > write(*, "(rc,f11.2,4x,'<RC')") .995_RT > write(*, "(rc,g15.2,'<RC')") .995_RT > write(*, "(rd,f11.2,4x,'<RD')") .995_RT > write(*, "(rd,g15.2,'<RD')") .995_RT > write(*, "(ru,f11.2,4x,'<RU')") .995_RT > write(*, "(ru,g15.2,'<RU')") .995_RT > write(*,'(a)') "12345678901234567890" > end 0.99 <RC 0.99 <RC 0.99 <RD 0.99 <RD 1.00 <RU 1.0 <RU 12345678901234567890 and write(*, "(ru,f11.1,4x,'<RU')") .995_RT gets 1.0 <RU