我有一个代码,它包含一些实数的乘法事件,无论输入变量如何,我总是得到那个特殊子程序的答案为零。
所有变量都是声明的real*4类型,并且具有类似于a=5、b=3.5和c=0.0005之类的值。
我正在使用柏拉图IDE
`
Subroutine Load_Modulation_100()
Real*4 :: Te
Real*4 :: Ee
Real*4 :: Et
Real*4 :: QLHV
Real*4 :: mfg
Real*4 :: Qfeul
Real*4 :: mf
Real*4 :: Pe
Real*4 :: Pt
Te = 100
Ee = 28.2
mf = 0.0005
QLHV = 47141
Et = 66.8
Cpfg = 4.5
Qfeul = (mf * QLHV)
Pe = (Qfeul * (Ee / 100))
Pt = (Qfeul * (Et / 100))
Write (*,*) Pe, 'kW'
Write (*,*) Pt, 'kW'
End Subroutine Load_Modulation_100`发布于 2016-07-25 08:10:58
可能不是这样,但整数截断可能是个问题.我会更加明确,也许会使用一些调试。
Subroutine Load_Modulation_100()
IMPLICIT NONE
Real*4 :: Te
Real*4 :: Ee
Real*4, PARAMETER :: Et = 66.8E0
Real*4 :: QLHV
Real*4 :: mfg
Real*4 :: Qfeul
Real*4 :: mf
Real*4 :: Pe
Real*4 :: Pt
LOGICAL*4 :: IO = .TRUE.
! Te = 100 ! This is a float, it just does;t jump off the page as one
Te = 100.0E0 !
Ee = 28.2
mf = 0.0005
QLHV = 47141 ! This is a float, it just does't jump off the page as one
!Moved to parameter Et = 66.8
Cpfg = 4.5
IF(IO) WRITE(*,*)' (Ee / 100)=', (Ee / 100)
Qfeul = (mf * QLHV)
! Pe = (Qfeul * (Ee / 100))
Pe = (Qfeul * (Ee / FLOAT(100)))
! Pt = (Qfeul * (Et / 100))
Pt = (Qfeul * (Et / 100.0E0))
Write (*,*) Pe, 'kW'
Write (*,*) Pt, 'kW'
RETURN
End Subroutine Load_Modulation_100!`https://stackoverflow.com/questions/38557447
复制相似问题