gpt4 book ai didi

Fortran MOD 和 MODULO 给出相同的结果

转载 作者:行者123 更新时间:2023-12-02 08:04:10 29 4
gpt4 key购买 nike

编译 gfortran --version == GNU Fortran (Homebrew GCC 8.2.0) 8.2.0

当我编写以下测试代码时,我得到了函数 MODMODULO给出相同的结果。但是,据我从多个来源了解到,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的精度不同?

最佳答案

您可能误解了这些函数的用途。当两个参数都是正数时,它们应该给你相同的答案,即除法后的余数。但是请考虑带有否定参数的情况:

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工作方式不同取决于 AP是整数或实数。有关确切定义,请参阅文档
MOD
MODULO

关于Fortran MOD 和 MODULO 给出相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53528505/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com