回 帖 发 新 帖 刷新版面

主题:[讨论]【基本功训练 01】浮点数 与 文件输入问题

近日,我在其它 BBS 上看到有很多资深网友在文件读取 有关 浮点数 的方面很模糊,如下例子可助诸君明白一些概念。
若是谁能直接讲出(不要上机实验)下面程序输入 0.33333, 0.33333E0, 0.33333D0 会发生什么,那您还是个明白人。  再上一个层次,就是能引经据典地给不懂得同志讲讲了。抛砖引玉,方家指正。


program main
  implicit none   
  
  double precision:: x, y
  character(len = 12):: fmt_str

  fmt_str = "(D24.16)"  
  read(unit = *, fmt = *) x   ! enter 0.33333, 0.33333E0, 0.33333D0
  write(unit = *, fmt = fmt_str) x 
  
  y = 0.33333 
  write(unit = *, fmt = fmt_str) y
  
  stop
end program main

回复列表 (共3个回复)

沙发

文件读入跟变量赋值不是一样的吗? 跟以下赋值的效果是一样的吧? 没深究, 我是这么理解的(确实没用机做实验).
x = 0.33333 跟 x = 0.33333E0 跟 x = 0.33333D0
如果是这样的话还是那个FAQ上精度问题吧

板凳

这倒是个问题,不过向来只用表控格式或者读进字符串自己处理。

3 楼

这是一个文件读取和浮点数精度的综合问题,值得深究!未必如汝等想的那么简单。比如您是否考虑过 Rounding Mode,读取文件中的实数在什么情况下要注意这个。

我来回复

您尚未登录,请登录后再回复。点此登录或注册