Fortran用F格式符转指定总位数数字的编译报错问题
报错原因
标准Fortran语法规定,F格式编辑符必须包含小数点和小数位数d,仅写F7省略.d部分不符合标准要求。你参考的文档提到的d可选属于特定厂商的非标准扩展,gfortran默认遵循标准语法,因此会抛出Period required in format specifier的编译错误。
解决方法
优先推荐使用符合标准的通用G格式编辑符实现需求,G格式会自动根据数值大小调整整数、小数部分的占比,刚好满足你「固定总位数7位、不固定小数位数」的要求,写法为G7.6:
- 第一个参数
7指定总输出宽度为7位(包含小数点、数字所有字符) - 第二个参数
6指定最多保留6位有效数字
针对你给出的示例数值,G7.6的格式化结果如下:
215.575 6.56967 16.4242
如果确实需要使用省略d的F格式语法,可以在编译时添加-fdec参数开启gfortran的扩展语法支持,即可正常编译F7格式的写法。但该写法属于非标准扩展,跨编译器兼容性差,不推荐生产环境使用。
内容的提问来源于stack exchange,提问作者wtf8_decode
相关产品推荐
相关产品推荐

