打印指定指数位数的双精度数

Printing double precision numbers with specifying the number of digits in the exponent

我想打印出来0.3194D-114。有什么办法吗?

我尝试使用

write(111,"(2I4, D30.20E3)") i, j, ez1(i,j,k)

但是我得到一个错误错误:

Period required in format specifier

根据 Fortran 2008 标准 (Cl. 10.3.2),D 编辑描述符不允许使用指数宽度:

1 An edit descriptor is a data edit descriptor (data-edit-desc), control edit descriptor (control-edit-desc), or character string edit descriptor (char-string-edit-desc).

R1007 data-edit-desc       is I w [ . m ]
                           [...]
                           or D w.d

仅允许 EENESG 编辑描述符(相同的子句和段落)指定指数:

                           or E w.d [ E e ]
                           or EN w.d [ E e ]
                           or ES w.d [ E e ]
                           or G w [.d [ E e ] ]

如果您可以使用 E 表示指数(而不是 D),您可以使用

write(111,"(2I4, E30.20E3)") i, j, ez1(i,j,k)