2015-03-31 793 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

相关问题