我正在写出数组的元素如下:
write(6,'(i4,200(1x,e15.7))')Jtot0, (a*PJjv(i,Jtot0,j,iv),i=1,nenerdif,100)
其中a
是常量。但是,当此常量等于1/2或1/3时,输出为零,如果等于1,则每个事物都顺利进行。数组元素为real*8
。
我怎样才能克服这一点,让我有义务乘以1/3倍?
答案 0 :(得分:7)
在Fortran 1/2
中是一个整数除法运算,在本例中为0
。 1/3
也是如此。如果您想要真实的结果,请执行真正的除法运算,例如1.0/2.0
。请注意,将1/2
的结果分配给实变量会将实变量设置为0.0
,即整数除法将导致0
,并且接下来发生的赋值将被强制转换该值为最接近的真实表示。
这种产生整数结果的整数除法业务在编程语言中很常见。