4

这可能是一个非常基本的问题,但我似乎无法在谷歌上或通过搜索这个论坛找到答案(很可能是由于问题的措辞不佳)。

我正在寻找一个内在的 Fortran 函数来给我一个整数使用的位置数。我的意思是,如果一个整数是 12543,那么使用的位置数是 5(它总是正数)。我想要这样做的原因是,当使用带有格式化输出的 WRITE 语句时,我可以在“ Iw ”中指定“ w ”并使用可能的最小间距。

进一步来说:

WRITE(*,"(/ A,Iw,1X,A,Iw)") "All particles within radius ",radius, "of particle index number", p_o_i

其中radiusp_o_i由用户之前指定。

我可以写一些东西来很容易地实现这一点,但我认为必须有一个内在函数可以实现这一点。

我一直在经历这里的功能,但没有太多运气。谢谢您的帮助。

4

1 回答 1

2

感谢您的回复!我承认这个问题具有误导性,因为它特别要求一个内在的 Fortran 函数来给出整数使用的位置数,而这并不是严格要求的。此外,普遍的共识似乎是这不存在。

正如francescalusHigh Performance Mark所建议的那样,为了确保将可能的最小间距用于整数,应使用“ I0 ”编辑描述。因此,对于前面的示例,这将是:

WRITE(*,"(/ 1X, A, I0, A, I0)") "All particles within radius ",radius, " of particle index number ", p_o_i

如果您实际上需要在整数中查找“字符”的数量(出于某种其他原因),建议的最佳响应似乎是使用该log10函数,正如steabert所建议的那样。

于 2014-08-18T16:08:51.293 回答