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

Jac*_*her 4 fortran fortran90

关于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
Run Code Online (Sandbox Code Playgroud)

我得到-3,-3.00000和-4.00000.但根据文档,所有返回类型都是INTEGER.那么为什么CEILINGFLOOR结果会显示小数点和尾随零?

fra*_*lus 13

CEILINGFLOOR返回整数结果.但是,您不打印这些结果:您正在打印变量celix,floorx哪些是真实类型.

由于隐式类型,这些变量是真实的.对比这nintx是一个整数变量.

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

write(*,*) NINT(x), CEILING(X), FLOOR(X)
Run Code Online (Sandbox Code Playgroud)

你会不那么惊讶.

显而易见的是:不要使用隐式类型.作为你的第二行implicit none.

  • 你没有学过fortran,直到你闭着眼睛输入`implicit none'. (5认同)