Fortran中的CEILING和FLOOR函数 - 他们不应该返回INTEGERS吗?

时间:2015-03-31 20:49:01

标签: fortran fortran90

关于Fortran 90/95中CEILINGFLOOR函数的快速提问。

基于文档: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。那么为什么CEILINGFLOOR结果会显示小数点和尾随零?

1 个答案:

答案 0 :(得分:13)

CEILINGFLOOR会返回整数结果。但是,您不打印这些结果:您正在打印真实类型的变量celixfloorx

由于隐式输入,这些变量是真实的。将其与nintx进行对比,write(*,*)确实是整数变量。

列表导向输出(write(*,*) NINT(x), CEILING(X), FLOOR(X) 部分)具有自然结果格式化您看到的实际变量。如果您改为直接打印功能结果

implicit none
你不会感到惊讶。

显而易见的是:不要使用隐式输入。作为第二行{{1}}。