fortran - Fortran 中的 CEILING 和 FLOOR 函数 - 它们不应该返回整数吗?

标签 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。但是根据文档,所有返回类型都是整数。那么为什么 CEILINGFLOOR 结果显示时带有小数点和尾随零?

最佳答案

CEILINGFLOOR 确实返回整数结果。但是,您并没有打印这些结果:您打印的是真实类型的变量 celixfloorx

由于隐式类型,这些变量是真实的。将此与 nintx 进行对比,后者确实是一个整数变量。

列表导向的输出(write(*,*) 部分)具有格式化真实变量的自然结果,如您所见。如果你直接打印函数结果

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

你不会那么惊讶。

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

关于fortran - Fortran 中的 CEILING 和 FLOOR 函数 - 它们不应该返回整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29378282/

相关文章:

matlab - 通过调用 Matlab 在 Fortran 循环中创建实时绘图

interface - 使用具有显式接口(interface) : Sometimes it compiles, 的外部过程的类型绑定(bind)过程有时不

ubuntu - Fortran 的 ODE 求解库,用于 Ubuntu x64

fortran - 如何在fortran中获取数组的起始索引

fortran - 为什么 Fortran 标准中最大单行长度限制为 132 个字符?

function - 如何查找内部函数的源代码 - gfortran

fortran - 如何在 Fortran 90/95 中使用 Fortran 77 子程序?

fortran - 在 do 循环 (fortran) 中跳过迭代

python - 使用 f2py 时,fortran 模块中的函数作用域与为 fortran 程序编译时不同?