【问题标题】:Why are the elements of an array formatted as zeros when they are multiplied by 1/2 or 1/3?为什么数组的元素在乘以 1/2 或 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 倍,我该如何克服这个问题?

【问题讨论】:

  • 你的意思是1/21/3(它们都是零),还是一半半?请出示a 的作业。

标签: arrays io fortran


【解决方案1】:

在 Fortran 中,1/2 是一个整数除法运算,在本例中将向下舍入为 01/3 也一样。如果你想要一个真实的结果,做一个真正的除法运算,比如1.0/2.0。请注意,将1/2 的结果分配给实数变量会将实数变量设置为0.0,即整数除法将导致0,接下来发生的分配会将那个值转换为最接近的实数表示。

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

【讨论】:

    猜你喜欢
    • 2014-08-20
    • 2010-10-02
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多