【问题标题】:Round down integer to end in 0 or 5 in Fortran 90在 Fortran 90 中将整数向下舍入以 0 或 5 结尾
【发布时间】:2020-01-12 08:21:24
【问题描述】:

我在 Fortran 中有如下整数值:

120343
120344
120345
119349
118350
118355

我想将它们四舍五入,所以最后一个数字始终是 0 或 5。所以上面的数字会变成:

120343 > 120340
120344 > 120340
120345 > 120345
119349 > 119345
118350 > 118350
118355 > 118355

我可以编写一个算法来解决这个问题,但我想知道是否有更直接的方法可以使用现有的 Fortran 90 函数来实现它。

我正在使用 gfortran (gcc8)。

【问题讨论】:

  • 您能展示一下您将使用的算法吗?它可能与大多数人使用标准内在函数编写的内容非常相似(没有用于此操作的单一专用标准过程)。比如,我可以想到一个简单的单行,但是否更直接......
  • 出于某种原因,我认为 Fortran 中会有一个特定的函数来执行此操作(我是 Fortran 新手,我仍在研究如何实现基本的东西)。

标签: fortran gfortran fortran90


【解决方案1】:

从您的预期输出表看来,您似乎只想将数字向下舍入到最接近的 n = 5 倍数。在这种情况下,您可以使用公式

y = x - mod(x, n)

唯一更直接的方法是清除最低有效位,以防n 是 2 的幂。

【讨论】:

  • 谢谢,这么简单。我在思考一些不必要的复杂问题。
猜你喜欢
  • 1970-01-01
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 2022-01-25
  • 2013-06-09
  • 1970-01-01
相关资源
最近更新 更多