以下输出星号(当我期望 -10.00 时),我试图找出原因:
WRITE(*,'(G10.4)') -9.99961061241612
我尝试过以下情况:
WRITE(*,'(G10.4)') -9.99961061241612 Outputs: **********
WRITE(*,'(G10.4)') -9.99999999999999 Outputs: -10.00
WRITE(*,'(G10.4)') -9.999 Outputs: -9.999
WRITE(*,'(G10.4)') -9.9999 Outputs: **********
WRITE(*,'(G10.4)') -9.99999 Outputs: -10.00
WRITE(*,'(G10.4)') 9.9999 Outputs: 10.000
当负数四舍五入到小数点后第四位时,它似乎会输出星号。 有人可以解释一下我为什么以及如何解释这种行为吗?
据我所知,G 格式应该按以下方式工作:
如果值大于 0.1 但又不太大而无法放入字段中,则使用字段宽度 w 并输出 d 个有效数字,以十进制格式(类似于 F 描述符)写入该数字。该数字后面有四个空格。否则,它的行为与 Ew.d 描述符完全相同。
地点: w 总字段宽度(必须大于零) d 小数点右边的位数(可能为零)
例如: WRITE(*,'(G10.4)') -0.000099961061241612 输出:-.9996E-04
我正在将 Intel Fortran 编译器软件包 ID:w_oneAPI_2022.0.0.161 与 Microsoft Visual Studio Professional 2019 版本 16.11.40 结合使用
出现星号是因为
G10.4
格式舍入为 -9.99961061241612
后无法将 -10.00
的舍入结果容纳在 10 个字符字段内。当负数向上舍入超出字段宽度时会发生这种情况。
G12.4
,以留出更多空间:
WRITE(*,'(G12.4)') -9.99961061241612
F
格式进行定点输出:
WRITE(*,'(F10.4)') -9.99961061241612