Fortran Coder

查看: 8006|回复: 2
打印 上一主题 下一主题

[输入输出] 关于fortran输出保持原有格式问题

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
20 元
贡献
12 点
跳转到指定楼层
楼主
发表于 2021-7-28 15:13:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我读入一列数据,每列数据的位数长短不一,然后我想把某一列数做个运算再按照原格式输出出来,比如第一列,就会输出812.80,其实我想输出的是812.8,还有就是输出后会出现空格,请问如何能实现啊,我把原数据和输出文件以及我写的代码附上来,求大神指导一下

1.png (18.78 KB, 下载次数: 251)

原数据

原数据

2.png (21.86 KB, 下载次数: 260)

程序代码

程序代码

3.png (20.06 KB, 下载次数: 236)

输出文件

输出文件
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

250

帖子

2

主题

0

精华

宗师

F 币
1731 元
贡献
872 点

规矩勋章

沙发
发表于 2021-7-29 09:11:09 | 只看该作者
本帖最后由 necrohan 于 2021-7-29 09:13 编辑

空格是第2列的输出格式问题,把F6.2改为F5.2可以去掉空格。
第1列原格式相当于去掉了数字末尾的0和小数点,可以用字符串处理。
[Fortran] 纯文本查看 复制代码
real::x; ! 要输出的数据
character*(20)::cx; ! 输出数据转字符串
integer::lx,i,i1,i2

do i=1,100
  x=812.8-(i-1)*0.05; ! 要输出的数据
  write(cx,'(f6.2)')x; ! 数值变字符串
  lx=LEN_TRIM(cx); ! 取字符串长度
  ! 去掉字符串末尾的0和小数点
  do while(.true.)
    i1=index(cx(1:lx),'0',back=.true.);
    i2=index(cx(1:lx),'.',back=.true.);
    if(i1==lx .or. i2==lx)then
      lx=lx-1
    else
      exit
    endif
  enddo
  write(*,*)"_"//cx(1:lx)//"_";
end do
end

2

帖子

1

主题

0

精华

新人

F 币
20 元
贡献
12 点
板凳
 楼主| 发表于 2021-7-30 11:55:31 | 只看该作者
谢谢大神,我试试
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-25 23:57

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表