2015-03-31 60 views
3

有關Fortran 90/95中的CEILINGFLOOR函數的一個簡短問題。根據相關文檔Fortran中的CEILING和FLOOR函數 - 是不是應該返回INTEGERS?

https://gcc.gnu.org/onlinedocs/gfortran/CEILING.html

我的印象是,他們採取以雷亞爾,但返回整數。然而,作爲一個例子,對於這個簡單的程序,我得到:

PROGRAM example 
REAL:: X=-3.4 
nintx = NINT(x) 
ceilx = CEILING(X) 
floorx = FLOOR(X) 
WRITE(*,*) nintx, ceilx, floorx 
END PROGRAM 

我得到-3,-3.00000和-4.00000。但基於文檔,所有返回類型都是INTEGER。那麼爲什麼CEILINGFLOOR結果顯示小數點和尾隨零?

+0

有隱含類型的變量'nintx','ceilx','floorx',編譯器會爲您完成轉換。 – ja72 2015-03-31 22:18:35

回答

11

CEILING and FLOOR do return integer results。但是,您不打印這些結果:您打印的是實際類型的變量celixfloorx

由於隱式鍵入,這些變量是真實的。將其與nintx對比,這確實是一個整數變量。

列表控制輸出(write(*,*)部分)的格式化自然變量如您所見。如果您直接打印功能結果

write(*,*) NINT(x), CEILING(X), FLOOR(X) 

您不會感到驚訝。

顯而易見的是:不要使用隱式類型。有你的第二行implicit none

+5

你沒有學會fortran,直到你可以閉上眼睛輸入'implicit none'。 – ja72 2015-03-31 22:19:52

相關問題