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

时间:2014-06-30 10:55:55

标签: arrays io fortran

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

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倍?

1 个答案:

答案 0 :(得分:7)

在Fortran 1/2中是一个整数除法运算,在本例中为01/3也是如此。如果您想要真实的结果,请执行真正的除法运算,例如1.0/2.0。请注意,将1/2的结果分配给实变量会将实变量设置为0.0,即整数除法将导致0,并且接下来发生的赋值将被强制转换该值为最接近的真实表示。

这种产生整数结果的整数除法业务在编程语言中很常见。