gfortran默认宽度/十进制数描述符
以下代码演示了对于gfortran,可以让处理器决定整数和浮点数的格式描述符的宽度:gfortran默认宽度/十进制数描述符,fortran,gfortran,fortran90,Fortran,Gfortran,Fortran90,以下代码演示了对于gfortran,可以让处理器决定整数和浮点数的格式描述符的宽度: program test double precision :: x = 5.321568756 integer :: i = 53254 write(*, '(I0)') i write(*, '(F0.3)') x end program test 编译时,此代码输出 53254 5.322 是否也可以让处理器决定write语句输出的小数点数量?换句话说,要使上述程序输
program test
double precision :: x = 5.321568756
integer :: i = 53254
write(*, '(I0)') i
write(*, '(F0.3)') x
end program test
编译时,此代码输出
53254
5.322
是否也可以让处理器决定write
语句输出的小数点数量?换句话说,要使上述程序输出以下内容:
53254
5.321568756
没有在格式描述符(如
”(F0.9)
中明确提供小数点的数量。类似于”(F0(此处的默认小数点数量))”
您可以使用g0
编辑描述符,如:
program test
double precision :: x = 5.321568756
integer :: i = 53254
write(*, '(I0)') i
write(*, '(F0.3)') x
write(*, '(G0)') x
end program test
(G和F编辑描述符之间的区别在于,当值变得足够大/足够小时,G编辑描述符将切换为指数表示法。但通常这是您想要的)您可以使用
g0
编辑描述符,如:
program test
double precision :: x = 5.321568756
integer :: i = 53254
write(*, '(I0)') i
write(*, '(F0.3)') x
write(*, '(G0)') x
end program test
(G和F编辑描述符之间的区别在于,当值变得足够大/足够小时,G编辑描述符将切换为指数表示法。但通常这是您想要的)您所说的“此处默认小数点数”是什么意思。回想一下,
x
可能不完全是5.321568756(而且5.321568756
是默认的真正非单精度)。我已经从文本中删除了关于.f90
和自由格式的部分(但留下了f90标记)。这些似乎与我无关,但如果你真的认为它们与我无关,请加回去。如果你使用列表定向I/O(*格式),编译器将选择其默认表示形式。你所说的“此处默认小数点数”是什么意思。回想一下,x
可能不完全是5.321568756(而且5.321568756
是默认的真正非单精度)。我已经从文本中删除了关于.f90
和自由格式的部分(但留下了f90标记)。这些似乎与我无关,但如果你真的认为它们与我无关,请加上它们。如果你使用列表定向I/O(*格式),编译器将选择它的默认表示形式。