Fortran 中非常小的数字

0 fortran

是否有可能在 Fortran 中实现非常小的数字1E-1200?我知道如何用 python 来做,但是我的硕士论文代码运行得太慢了。我的主管推荐我使用 Fortran,但我不确定这是否是一个问题。

Ste*_*nel 5

前面的答案建议使用 ISO_FORTRAN_ENV 中的 REAL128 描述了一个不可移植的解决方案。您在这里得到的是一个真实类型,其表示形式为 128 位,但这并没有说明该类型的范围或精度!例如,某些 IBM 系统具有 128 位实数类型,它实际上是带有偏移指数的两个双精度数。这可以让你获得更高的精度,但不会显着增加范围。

执行此操作的正确方法是使用 SELECTED_REAL_KIND 内部函数来确定支持所需范围的实现类型。例如:

integer, parameter :: bigreal = SELECTED_REAL_KIND(R=1200)
real(KIND=bigreal) :: x
Run Code Online (Sandbox Code Playgroud)

如果实现没有真正的类型可以表示十进制指数为正负 1200 的值,您将收到错误,否则您将获得最小的适当类型。

您还可以在调用中指定 P= 值来指示您需要的最小精度(以十进制数字表示)。