1. 从“一团乱麻”到“赏心悦目”:为什么你需要格式化输出?
刚开始学Fortran那会儿,我最头疼的就是输出结果。写个简单的计算程序,print *, a, b, c 一敲,屏幕上蹦出来的东西简直没法看。数字挤成一团,小数位数忽长忽短,想对齐个表格比登天还难。那时候的输出,就像没整理过的数据垃圾场,自己看着都费劲,更别说拿给别人看了。
后来我才明白,这就是“格式化输出”要解决的问题。它不是什么高深的理论,而是编程里最实在的“面子工程”。想象一下,你写了个科学计算程序,算出了一堆重要的数据。如果直接输出,可能是 3.1415926535 2.7182818284 6.02214076e23 这样堆在一起。但经过格式化,它可以变成:
圆周率近似值: 3.1416
自然对数底数: 2.7183
阿伏伽德罗常数: 6.022E+23
是不是瞬间清晰、专业了无数倍?格式化输出的核心,就是告诉计算机:请按照我指定的“模板”来摆放每一个数字、每一个字符。这个模板,就是格式描述符。它控制着字段宽度、小数位数、对齐方式、是否补零、是否显示正号等所有细节。
掌握格式化输出,意味着你从“能让程序跑起来”进阶到了“能让程序输出漂亮、易读的结果”。无论是生成报告、调试代码,还是进行数据可视化前的预处理,整洁规范的输出都能极大提升效率。接下来,我就把自己踩过坑、总结出的实战经验,从最基础的描述符到一些“骚操作”,毫无保留地分享给你。
2. 核心武器库:你必须掌握的格式描述符
格式化输出的战斗力,全靠格式描述符。别看它们就是几个字母加数字,组合起来威力无穷。咱们先搞定最常用、最核心的几个,我保证用最直白的话和例子让你一次看懂。
2.1 整数的“定妆照”:Iw[.m]
Iw[.m] 是给整数“拍照”的相框。w 代表相框的总宽度(字符数),m 是可选的,代表照片里最少要显示几位数字。
基础用法:
write(*, "(I5)") 100
这行代码的意思是:用一个宽度为5个字符的“框”来输出整数100。输出结果是 100(前面有两个空格)。数字默认右对齐,不足的宽度用空格在左边补齐。
踩坑预警:框太小会“爆框”!
write(*, "(I3)") 10000
10000有5位数字,你只给3个字符宽的框,结果就是打印出三个星号:***。这是Fortran在告诉你:“框太小,装不下!”
进阶技巧:强制补零 (.m)
write(*, "(I5.4)") 100
输出: 0100。这里 I5.4 的意思是:总宽5,但至少要输出4位数字。100只有3位,所以会在前面补一个0,变成4位(0100),然后放在5位的框里右对齐,左边再补一个空格。 我个人的建议是:这个 .m 参数要慎用。 因为补零后的数字(如0100)容易和八进制数混淆,在大多数日常输出中,用默认的空格补齐就足够了。
2.2 浮点数的“精修图”:Fw.d 和 Ew.d[Ee]
处理小数,我们有两个主力:Fw.d 用于常规小数,Ew.d[Ee] 用于科学计数法。
Fw.d:定点输出 w 是总宽度,d 是小数点后的位数。
write(*, "(F8.3)") 123.4567
输出: 123.457。我们来算一下:总宽8位。数字本身 123.457(四舍五入到3位小数)占6位,小数点占1位,一共7位。因为不足8位,所以在左边补1个空格。千万记住,小数点本身也占1个字符宽度! 这是新手最容易算错的地方。
Ew.d[Ee]:科学计数法输出 当数字非常大或非常小时,用 F 格式可能不方便阅读,E 格式就派上用场了。
write(*, "(E12.5)") 0.000123456


177

被折叠的 条评论
为什么被折叠?



