关于Fortran 90/95中CEILING
和FLOOR
函数的快速提问。
基于文档:https://gcc.gnu.org/onlinedocs/gfortran/CEILING.html
我的印象是他们接受了REAL,但返回INTEGER。但是,作为一个例子,对于这个简单的程序,我得到:
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。那么为什么CEILING
和FLOOR
结果会显示小数点和尾随零?
答案 0 :(得分:13)
CEILING
和FLOOR
会返回整数结果。但是,您不打印这些结果:您正在打印真实类型的变量celix
和floorx
。
由于隐式输入,这些变量是真实的。将其与nintx
进行对比,write(*,*)
确实是整数变量。
列表导向输出(write(*,*) NINT(x), CEILING(X), FLOOR(X)
部分)具有自然结果格式化您看到的实际变量。如果您改为直接打印功能结果
implicit none
你不会感到惊讶。
显而易见的是:不要使用隐式输入。作为第二行{{1}}。