这可能是一个非常基本的问题,但我似乎无法在谷歌或通过搜索此论坛找到答案(很可能是由于该问题的措辞不佳)。
我正在寻找一个内在的Fortran函数来给我一个整数使用的位置数。我的意思是,如果整数是12543,那么使用的位置数是5(它将始终为正)。我想要的原因是,当使用带有格式化输出的WRITE语句时,我可以指定" w " in" Iw "并尽可能使用最小间距。
更具体地说:
WRITE(*,"(/ A,Iw,1X,A,Iw)") "All particles within radius ",radius, "of particle index number", p_o_i
之前用户指定 radius 和 p_o_i 。
我可以写一些东西来轻松实现这一点,但我认为必须有一个能够实现这一目标的内在功能。
我一直在查看函数here,但没有太多运气。谢谢你的帮助。
答案 0 :(得分:1)
感谢您的回复!我承认这个问题具有误导性,因为它特别要求一个固有的Fortran函数给出一个整数使用的位置数,而这在一开始并不是严格要求的。此外,普遍的共识似乎是,这不存在。
根据francescalus和High Performance Mark的建议,为了确保可能的最小间距用于整数," I0 "应该使用编辑说明。所以对于前面的例子,这将是:
WRITE(*,"(/ 1X, A, I0, A, I0)") "All particles within radius ",radius, " of particle index number ", p_o_i
你真的需要找到"字符的数量"在整数(由于某些其他原因)中,最好的建议响应似乎是使用log10
函数,如steabert所建议。