我正在写一个数组的元素,如下所示:
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的倍数,我该如何克服呢?
在Fortran中,1/2
是一个整数除法运算,在这种情况下,它将舍入为0
。相同1/3
。如果要得到真实的结果,请进行真实的除法运算,例如1.0/2.0
。请注意,将的结果1/2
赋给实变量会将实变量设置为0.0
,即将得到整数除法0
,然后发生的赋值会将该值转换为最接近的实数表示形式。
在编程语言中,这种产生整数结果的整数除法业务非常普遍。