Warm tip: This article is reproduced from serverfault.com, please click

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

(io - Why are the elements of an array formatted as zeros when they are multiplied by 1/2 or 1/3?)

发布于 2014-06-30 10:55:54

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

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的倍数,我该如何克服呢?

Questioner
user139141
Viewed
0
High Performance Mark 2014-06-30 19:07:29

在Fortran中,1/2是一个整数除法运算,在这种情况下,它将舍入为0相同1/3如果要得到真实的结果,请进行真实的除法运算,例如1.0/2.0请注意,将的结果1/2赋给实变量会将实变量设置为0.0,即将得到整数除法0,然后发生的赋值会将该值转换为最接近的实数表示形式。

在编程语言中,这种产生整数结果的整数除法业务非常普遍。