【发布时间】:2016-11-24 16:33:43
【问题描述】:
我正在尝试使用 FORTRAN 77 中的格式语句来精确定义我想要读取的数字。
这是我的代码行:
double precision x,y,z
open(u,FILE='points.dat',STATUS='OLD')
do 10 i=1,n
read(u,100) x,y,z
write(*,*),'check', x,y,z
enddo
100 format(3(2x,D14.2))
close(u)
我尝试读取这些数字:1.0542095e-03 -3.4176819e-02 -1.3796906e-01 使用不同的格式,结果是:
format(3(2x,E14.2)): check 0.0010542095 -0.034176819 -0.13796906
format(3(2x,E14.7)): check 0.0010542095 -0.034176819 -0.13796906
format(3(2x,D14.7)): check 0.0010542095 -0.034176819 -0.13796906
我本来希望第一行给出 0.001000000,第二行给出 0.001054209,但格式语句似乎对阅读没有影响,或者我没有正确使用它。任何人都可以解释一下格式在读取功能中的作用以及如何正确使用它?
【问题讨论】:
-
这个问题可能有两个部分。主要的答案是读取正在做它应该做的事情(当你在输入值中有一个小数符号时,格式中小数部分的宽度被忽略)。这导致:您是否还想要一个答案,告诉您必须将正确读取的实际值的值截断到给定的小数位数?