Is there a way to format a real number for output such that both the width and decimal parts are left unspecified? This is possible with ifort by just doing the following:
write (*, '(F)') num
...but I understand that that usage is a compiler-specific extension. Gfortran does accept the standard-compliant 0-width specifier, but I can't find anything in the standard nor in gfortran's documentation about how to leave the decimal part unspecified. The obvious guess is to just use 0 for that as well, but that yields a different result. For example, given this:
real :: num
num = 3.14159
write (*, '(F0.0)') num
...the output is just 3.. I know I could specify a decimal value greater than zero, but then I am liable to have undesired extra zeros printed.
What are my options? Do I have any?
Best solution:
It turns out that the easiest solution is to use the
gspecifier ("g" for "generalized editing"). That accepts a0to mean unspecified/processor-dependent width, which is exactly what I wanted. This is preferable to leaving the entire format unspecified (write(*,*)) because you can still control other parts of the output, for example:yields this:
Thanks to Vladimir F for the idea (seen here).
Inferior alternative:
My first thought this morning after seeing High Performance Mark's answer was to write the real number to a character string and then use that:
It yields the same output as the best solution, but it is a little more complicated and it doesn't offer quite as much control, but it gets close.