1

我正在学习 Fortran(使用 Fortran 2008 标准),并且想独立设置变量的整数部分精度和小数部分精度。我该怎么做呢?

例如,假设我想声明一个实数变量,其整数部分精度为 3,小数部分精度为 8。

上述规范中的示例数字是 123.12345678,但 1234.1234567 不满足给定要求。

4

2 回答 2

2

Fortran 实数是浮点数。浮点数不存储整数部分和小数部分。它们存储有效数和指数。

了解浮点数是如何工作的http://en.wikipedia.org/wiki/Floating-point_arithmetic您的 CPU 通常使用一种浮点格式,您不能简单地选择其他格式。

您所要求的更像是 FIXED 点算术,但现代 CPU 和 Fortran 本身并不支持它。https://en.wikipedia.org/wiki/Fixed-point_arithmetic

您可以在各种库(甚至可能是 Fortran)或语言中使用它们,但它们不是原生的 REAL。它们可能是在软件中实现的,而不是直接在 CPU 中实现的,而且速度较慢。

于 2017-04-27T12:40:25.673 回答
0

我最终为此编写了一个函数,以便在不实际修改浮点数的情况下将浮点数与.gt./ .lt./ .ge./ .le./运算符一起使用。.eq.

function PreciseInt(arg1, arg2) Result(PreciseInt)
  real*8     arg1       !Input variable to be converted
  integer*4  arg2       !Input # for desired precision to the right of the decimal
  integer*4  PreciseInt !Integer representing the real value with desired precision

  PreciseInt = idnint(arg1 * real(10**arg2))
end function
于 2019-03-28T20:55:06.323 回答