Fortran Coder

标题: 等宽度输出数据 [打印本页]

作者: 大头鼹鼠    时间: 2017-3-9 13:36
标题: 等宽度输出数据
fortran 有没有这样的功能,自动识别数据,并且等宽度输出
比如:123.6,34.98,1456,889.4.。。。。。等好多数据
输出结果是是这样,比如规定7个字节的宽度
123.600
34.9800
1456.00
889.400

作者: li913    时间: 2017-3-9 17:40
假如你限定宽度为7,怎么输出 123456.789 ?
作者: 大头鼹鼠    时间: 2017-3-10 08:37
li913 发表于 2017-3-9 17:40
假如你限定宽度为7,怎么输出 123456.789 ?

这个的前提是我是知道数据小数点前面数据的位宽的,因为组态软件读入数据不太智能,所以要统一位宽的
作者: vvt    时间: 2017-3-10 12:27
没有直接的办法,只能自行判断,分情况使用格式符。
作者: li913    时间: 2017-3-10 12:39
[Fortran] 纯文本查看 复制代码
program test
  implicit none
  integer::n=7,m,i
  character(40):: str='',strF="(f20.20)"
  real a,b
  !设置输出格式
  write(strF(3:4),'(i2.2)') n*2+1
  write(strF(6:7),'(i2.2)') n
  !输出到字符串
  a= 1234567
  write(str,strf) a
  str=adjustl(str)
  !验证
  if(str(1:1)=='*') then
    write(*,*) '输出域宽不够'
  else   
    read(str(1:n),*) b
    str(n+1:) = ''
    if(abs(a-b)>1.0) then
      write(*,*) '输出域宽不够'
    else
      write(*,"(a)") str(1:n)
    end if
  end if  
  pause
  end program

作者: 大头鼹鼠    时间: 2017-3-10 13:12
li913 发表于 2017-3-10 12:39
[mw_shl_code=fortran,true]program test
  implicit none
  integer::n=7,m,i

不错  可以采用字符串来搞定 好办法




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2