integer - Fortran:处理大小的整数值:~700000000000

标签 integer fortran numbers long-integer

目前我正在复习我的 Fortran95 知识(不要问为什么)...

我遇到了一个问题。如何处理大整数,例如。大小:~700000000000

INTEGER(KIND=3) 不能容纳这个数字。
如果有人对我可用的编译器感兴趣,那就是 Silverfrost FTN95。

我正在使用整数来运行更大的数据集。

你有什么建议吗?

最佳答案

标准解决方案(自 Fortran 95 起,所以我假设您的编译器支持它)是使用 SELECTED_INT_KIND 固有的探测有效整数类型(其值取决于编译器)和 HUGE 固有的。

  • SELECTED_INT_KIND (R)返回整数类型的 kind 类型参数,该类型参数表示所有整数值 n,其中 -10^R < n < 10^R(如果不存在此类类型,则返回 -1)。
  • HUGE (K)返回 K 类整数类型中最大的可表示数。

  • 例如,在我的带有 x86_64 处理器(gfortran 编译器,64 位模式)的 Mac 上,以下程序:
      print *, selected_int_kind(1)
      print *, selected_int_kind(4)
      print *, selected_int_kind(8)
      print *, selected_int_kind(16)
      print *, selected_int_kind(32)
      print *, selected_int_kind(64)
      print *, huge(0_1)
      print *, huge(0_2)
      print *, huge(0_4)
      print *, huge(0_8)
      print *, huge(0_16)
      end
    

    输出:
               1
               2
               4
               8
              16
              -1
      127
      32767
      2147483647
      9223372036854775807
     170141183460469231731687303715884105727
    

    这告诉我我会使用 integer(kind=8)为你的工作。

    关于integer - Fortran:处理大小的整数值:~700000000000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2390395/

    相关文章:

    java - 如何检查字符串数组中的每个元素是否为整数?

    java - 一堆数字中的 "e"

    javascript - 如何使用JavaScript生成固定长度的随机数?

    java - 将数组列表中的值添加到 int

    java - Java 中的整数与字符串决策

    fortran - "too many records in I/O statement"错误的原因不明

    string - 通过返回分配的字符串导致内存泄漏

    algorithm - 如何求解线性矩阵方程 : AX-XA=B efficiently?

    unicode - 是否有用于一元数字的 Unicode 符号(|、||、...、|̶|̶|̶|̶)?

    c++ - 奇怪的类型推导