Fortran 中的 CEILING 和 FLOOR 函数 - 它们不应该是 return INTEGERS 吗?
CEILING and FLOOR function in Fortran - aren't they supposed to return INTEGERS?
有关 Fortran 90/95 中 CEILING
和 FLOOR
函数的快速问题。
基于文档:https://gcc.gnu.org/onlinedocs/gfortran/CEILING.html
我的印象是他们接受实数,但 return 整数。但是,作为示例,对于这个简单的程序,我得到:
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。但是根据文档,所有 return 类型都是整数。那么为什么 CEILING
和 FLOOR
结果显示时带有小数点和尾随零?
CEILING
和 FLOOR
做 return 整数结果。但是,您没有打印这些结果:您打印的是真实类型的变量 celix
和 floorx
。
由于隐式键入,这些变量是真实的。将此与 nintx
进行对比,后者确实是一个整数变量。
列表定向输出(write(*,*)
部分)具有如您所见格式化真实变量的自然结果。如果您改为直接打印函数结果
write(*,*) NINT(x), CEILING(X), FLOOR(X)
你不会那么惊讶。
显而易见的是:不要使用隐式类型。作为你的第二行 implicit none
.
有关 Fortran 90/95 中 CEILING
和 FLOOR
函数的快速问题。
基于文档:https://gcc.gnu.org/onlinedocs/gfortran/CEILING.html
我的印象是他们接受实数,但 return 整数。但是,作为示例,对于这个简单的程序,我得到:
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。但是根据文档,所有 return 类型都是整数。那么为什么 CEILING
和 FLOOR
结果显示时带有小数点和尾随零?
CEILING
和 FLOOR
做 return 整数结果。但是,您没有打印这些结果:您打印的是真实类型的变量 celix
和 floorx
。
由于隐式键入,这些变量是真实的。将此与 nintx
进行对比,后者确实是一个整数变量。
列表定向输出(write(*,*)
部分)具有如您所见格式化真实变量的自然结果。如果您改为直接打印函数结果
write(*,*) NINT(x), CEILING(X), FLOOR(X)
你不会那么惊讶。
显而易见的是:不要使用隐式类型。作为你的第二行 implicit none
.