You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fortran格式字符串报错求助:非负宽度要求及格式符问题

解决Fortran格式字符串错误问题

错误原因分析

报错指向第41行的Iw.6格式符,核心问题有两个:

  • 格式符与输出类型不匹配:你要输出的三个参数都是表头文本(字符串类型),但格式字符串里错误混用了整数格式符Iw和浮点数格式符F10.2,完全不符合输出内容的类型。
  • 无效格式符语法:Fortran中整数格式符I的宽度必须是具体的非负整数(比如I6),不能用w这类未定义标识符,这直接触发了"Nonnegative width required"错误。

修正方案

把表头行的格式字符串改成适配字符串输出的格式,可选择带宽度的A格式符来对齐表头,或用A/G0自动适配长度。以下是具体修正:

修正后的表头输出语句

! 用带宽度的A格式符对齐表头,可根据需求调整宽度数值
write(*,'(A30, A40, A40)') "Original Price Tag Before Tax", &
  "Discounted Price After Tax (CAD)", "Discounted Price After Tax (USD)"

如果不需要固定宽度,也可以用更灵活的G0自动适配:

write(*,'(G0, G0, G0)') "Original Price Tag Before Tax", &
  " Discounted Price After Tax (CAD)", " Discounted Price After Tax (USD)"

完整修正后的代码(仅关键部分修改)

program discount_chart
  implicit none

  ! 变量声明和输入校验部分保持不变

  ! Print chart header - 修正格式字符串
  write(*,'(A30, A40, A40)') "Original Price Tag Before Tax", &
    "Discounted Price After Tax (CAD)", "Discounted Price After Tax (USD)"

  ! 计算和输出价格部分保持不变

end program discount_chart

额外注意事项

  • 格式符必须和输出变量类型严格对应:字符串用A/G0,整数用I,浮点数用F/E/G等。
  • 给A格式符指定宽度(如A30)可实现表头对齐,若不需要固定宽度,直接用A即可。
  • 你之前尝试的G0、Iw等格式符无效,是因为没匹配输出内容的类型——表头是纯文本,和整数、浮点数格式符完全不相关。

内容的提问来源于stack exchange,提问作者setupspawn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:05:21