用gfortran --version == GNU编译(国产GCC 8.2.0) 8.2.0
当我编写下面的测试代码时,我会得到MOD和MODULO函数,并给出相同的结果。然而,正如我从几个方面了解到的,MOD应该给出余数,而MODULO应该给出整数商。
program test
implicit none
print *, mod(17,3)
print *, mod(17.5,5.5)
print *, mod(17.5d0,5.5)
print *, mod(17.5,5.5d0)
print *, modulo(17,3)
print *, modulo(17.5,5.5)
print *, modulo(17.5d0,5.5)
print *, modulo(17.5,5.5d0)
end program test打印出来:
2
1.00000000
1.0000000000000000
1.0000000000000000
2
1.00000000
1.0000000000000000
1.0000000000000000
结果是所有剩余的,这是MOD应该做的,但是对于MODULO,它不是应该打印出模数,在这个例子中,5,然后三个3,以不同的精度?
发布于 2018-11-28 22:00:03
你可能误解了这些功能的目的。他们应该给你同样的答案,也就是除数后的余数,当两个论点都是肯定的。但是,用否定的观点来考虑一下情况:
print *, mod( 17, 3)
print *, mod( 17., 3.)
print *, mod(-17, 3)
print *, mod(-17., 3.)
print *, modulo(-17, 3)
print *, modulo(-17., 3.)会回来的
2
2.000000
-2
-2.000000
1
1.000000因此,MODULO(A,P)的结果对阳性的P是阳性的,而且实际上必须与P有相同的符号。MODULO的工作方式不同,取决于A和P是整数还是实数。有关确切定义,请参阅文档。
https://stackoverflow.com/questions/53528505
复制相似问题