gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 21:41:37 26 4
gpt4 key购买 nike

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

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 是一个整数除法运算,在本例中,它会向下舍入为 01/3 相同。如果你想要一个真正的结果,做一个真正的除法运算,比如1.0/2.0。请注意,将 1/2 的结果赋给一个实数变量会将实数变量设置为 0.0,即整数除法将导致 0 并且接下来发生的赋值会将那个值转换为其最接近的真实表示。

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

关于arrays - 为什么数组的元素在乘以 1/2 或 1/3 时被格式化为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24488518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com