在大整数上应用mod运算符

时间:2014-03-13 15:14:26

标签: random integer fortran long-integer

我在我的fortran代码中生成大整数,用作我正在使用的随机数函数的种子。问题是我有几个这样的,我注意到有时生成的数字太大而且只是得到2147483647,据我所知,这是fortran中整数的8位数限制。

我想通过将该数字的mod与该限制一起解决。我该如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

大多数Fortran编译器提供64位整数,它们将提供至少18位十进制数字。 (Fortran 2008要求支持64位整数。)您可以通过以下方式选择这些:

integer, parameter :: VeryLongInt_K = selected_int_kind (18)
integer (kind=VeryLongInt_K) :: variable

或者您可以使用ISO_FORTRAN_ENVint64类型来选择64位整数:

use, intrinsic :: ISO_FORTRAN_ENV
integer (int64) :: variable

答案 1 :(得分:0)

只需使用更大的整数类型。

integer, parameter :: ip = selected_int_kind(number_of_digits_you_need)
integer(ip) :: var !all the integer variables that need to be large

整数将能够具有更大的值,mod函数将生成相同类型的结果。