【问题标题】:Fortran FORMAT statementFortran FORMAT 语句
【发布时间】:2012-08-29 18:10:42
【问题描述】:

我正在尝试阅读以下内容:

110134458.602 7 20957861.900

我的格式行目前如下:

READ(7,110,END=999) L1,C1,D1
write(*,*) L1,C1,D1
110 FORMAT(F14.3,1x,F1.0,2x,F14.3)

但是我收到的输出是:

110134458.60200000 7.0000000000000000 20957861.899999999

为什么我有这么多小数位,为什么最终值不匹配? 谢谢!

【问题讨论】:

  • @arxanas:不,不是舍入错误,浮点数的典型行为。

标签: format fortran


【解决方案1】:

看起来您正在正确读取这些值。对于输出的列表导向 IO,编译器通常会使用数字类型的最大位数。并非所有十进制值都具有精确的有限精度二进制等价物——这可能是您所看到的第三个数字。如果您对输出使用格式语句,指定较少的数字,则该值将被四舍五入并显示正确。

【讨论】:

  • 我修改了写入语句以匹配修复小数问题的读取格式,但是现在它没有正确读取数字 7,而是给了我一个 *。还有其他想法吗?
  • 我把它改成了I1而不是F1.0,问题就解决了。谢谢
猜你喜欢
  • 1970-01-01
  • 2013-04-12
  • 2011-02-23
  • 2012-02-26
  • 2017-01-18
  • 1970-01-01
  • 2015-06-25
  • 2013-05-02
  • 2016-06-23
相关资源
最近更新 更多