週1でも日記

  • このサイトに書かれていることは間違っているかもしれませんので、ご注意ください。
  • 非推奨環境: フォントの大きさが Unreadable な xterm 上のテキストブラウザ
2005][07][08][09][10][11][12][
2006][01][02][03][04][05][06][07][08][09][10][11][12][
2007][01][02][03][04][05][06][07][08][09][10][11][12][
2008][01][02][03][04][05][06][07][08][09][10][11][12][
2009][01][02][03][04][05][06][07][08][09][10][11][12][
2010][01][02][03][04][05][06][07][08][09][10][11][12][
2011][01][02][03][04][05][06][07][08][09][10][11][12][
2012][01][02][03][04][05][06][07][08][09][10][11][12][
2013][01][02][03][04][05][06][07][08][09][10][11][12][
2014][01][02][03][04][05][06][07][08][09][10][11][12][
2015][01][02][03][04][05][06][07][08][09][10][11][12][
2016][01][02][03][04][05][06][07][08][09][10][11][

2016年47週325日星期0 12:00:00 AM 00:00:00

トラックバック - http://d.hatena.ne.jp/yshl/20161120

2016年44週304日星期0 12:00:00 AM 00:00:00

なぜ 1+1 が 10 にならないのだろう 00:33 なぜ 1+1 が 10 にならないのだろうを含むブックマーク

まず、Fortran で '1.+1' という文字列実数として読み取るとどうなるかというと、1.e+1 の e が省略されたもの、と解釈されて、10.0 になるわけです。

      real a
      character(len=32) s
      s='1.+1'
      read(s, *) a
      write(*, *) a
      read(s, '(f8.4)') a
      write(*, *) a
      read(s, '(f10.4)') a
      write(*, *) a
      read(s, '(f10.6)') a
      write(*, *) a
      end

実行結果

   10.0000000
   10.0000000
   10.0000000
   10.0000000

この '1.+1' を '1+1' に変える。

      real a
      character(len=32) s
      s='1+1'
      read(s, *) a
      write(*, *) a
      read(s, '(f10.4)') a
      write(*, *) a
      read(s, '(f10.5)') a
      write(*, *) a
      read(s, '(f10.6)') a
      write(*, *) a
      end

するととどうなるか。Gfortran 4.8.5 の場合以下のようになる。

   10.0000000
   1.00000005E-03
   9.99999975E-05
   9.99999975E-06

デフォルトの書式 (*) にした場合は 10 になるものの、書式を指定すると奇妙な結果になる。

一体どういうことだろう。

C 風の printf フォーマットのいけてない点といえば 00:33 C 風の printf フォーマットのいけてない点といえばを含むブックマーク

指数部の桁数を指定できない事。

FortranCommon Lisp だったらできるのに。

Microsoft の Visual C++ には _set_output_format があったけど、 obsolete になってしまったし。

トラックバック - http://d.hatena.ne.jp/yshl/20161030

2016年41週284日星期1 12:00:00 AM 00:00:00

トラックバック - http://d.hatena.ne.jp/yshl/20161010

2016年41週283日星期0 12:00:00 AM 00:00:00

トラックバック - http://d.hatena.ne.jp/yshl/20161009

2016年38週263日星期1 12:00:00 AM 00:00:00

トラックバック - http://d.hatena.ne.jp/yshl/20160919
2005)(07)(08)(09)(10)(11)(12)(
2006)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2007)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2008)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2009)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2010)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2011)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2012)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2013)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2014)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2015)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(
2016)(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(
370512