猿问

为什么将数组的元素乘以1/2或1/3时会被格式化为零?

我正在写出数组的元素,如下所示:


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。


米脂
浏览 632回答 1
1回答

幕布斯6054654

在Fortran中,1/2是整数除法运算,在这种情况下,它将舍入为0。相同1/3。如果要得到真实的结果,请进行真实的除法运算,例如1.0/2.0。请注意,将的结果1/2赋给实变量会将实变量设置为0.0,即将得到整数除法0,然后发生的赋值会将该值转换为最接近的实数表示形式。整数除法会产生整数结果,这在编程语言中非常普遍。
随时随地看视频慕课网APP
我要回答