• 締切済み

Fortranについて質問です!

Fortranで扱う倍精度実数で「1.0D60」は、1.0×10^60という解釈でいいのですか? 本当始めたばっかりで理解が浅いので…どなたかよろしくお願いします><

みんなの回答

  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.2

まあ、認識としてはいいでしょうが、コンピュータの内部では、16進数又は2進数で表現されたその近似値になっています(アーキテクチャで違う)。誤差を議論する場合は非常に重要になります。 浮動小数点の演算では、A=(A/B*B)が成立しないことがあります(大概、右辺が小さくなる)。 なので、お金の計算はしないでください。

全文を見る
すると、全ての回答が全文表示されます。
  • TT414
  • ベストアンサー率18% (72/384)
回答No.1

Yes

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • fortranでx=1としても0.9..が入る

    fortranで以下のようなプログラムにてxに1.0^-6を代入し、 その中身を表示しました。 --------------------------------- program test real(8) :: x = 1.0d-6 write(*,*) x write(*,*) x * 1.0d6 write(*,*) int(x * 1.0d6) end program test --------------------------------- しかし、結果は以下のようになり、 0.999999999999999955^-6となってしまいます。 さらに、やっかいなことに10^6倍して 整数型に変換しても0と認識されてしまうのです。 ---------------------------------- $ ./a.exe 9.99999999999999955E-007 1.00000000000000000 0 ---------------------------------- 変数の型も倍精度で宣言し、定数も倍精度(d付き)で 代入しているはずなのですが、なぜこのような現象が 起きるのでしょうか。 ご存知の方いましたら教えて頂けると助かります。 なお、コンパイルはgfortranで行っています。

  • FORTRANについての質問

    FORTRANで次の式のプログラミングを書くという課題がでたのですが、どのようにかけばよいですか?? d~2x/dt~2+a~2x=0 本当にわかりません!!! よろしくお願いします。。。

  • FORTRANで>>

    FORTRANで実数係数をもつ任意の3次代数方程式の解の個数を判別する方法が まったく思い付かなく困ってます。ご教授お願いします。

  • fortran90

    fortran90で、シンプソン1/3 公式による自動積分プログラムを作る際の質問です。例えば円周率を求めるとして精度を10^(-6)までにするにはどうすればよいですか?どーしても10^(-4)が限界です。

  • Fortranの変数

    Fortranの変数の取り扱いに関する質問です。 実数で宣言した変数に 33.3 という数字を読み込ませたのですが, そのまま書式を指定せずに書き込ませると 33.2999992 と表示されました。 これはなぜなのでしょうか。

  • Fortranの倍精度実数について

    こんにちは。 現在、Fortran 90でプログラムを作成しています。 その中で、整数の倍精度実数への型変換についての疑問がわきましたので、質問させていただきます。 以下の2つのプログラムで、計算がより速く、より精度よくできるのはAとBどちらなのでしょうか。 実際は下記のプログラムが、ループの中に入っているので少しでも計算時間を短くしたいのです。 よろしくお願いいたします。 program A(毎回dxを足す) ----------------------------- real(8) :: pi, dx real(8), dimension(1000) :: x integer i, j pi=atan(1d0)*4d0 dx=pi/5000d0 x=0d0 j=1 do i=1, 1000 x(i)=x(j)+dx j=i write(*,*)x(i) end do ----------------------------- program B(毎回dx*ループ回数を計算する) ----------------------------- real(8) :: pi, dx real(8), dimension(1000) :: x integer i, j pi=atan(1d0)*4d0 dx=pi/5000d0 x=0d0 do i=1, 1000 x(i)=dx*dble(i) write(*,*)x(i) end do -----------------------------

  • fortranの整数と実数

    fortranに関する質問です. 型宣言を下のように行った上で,計算を行うと dが110ではなく,109と出力されるのですが,なぜでしょうか. dも実数で宣言しておくと110.0000と表示されます. こうなる理由と解決策をぜひお教えください. real a,b,c integer d a=33.0 b=3.0 c=0.1 d = (a/b)/c write(*,*) d

  • FORTRANについての質問です。

    最近課題でFORTRANをやっているのです。 サブルーチンのMINVS/D/Q/C/Bというのを使って3×3の行列の逆行列を出力するプログラミングを作っているのですが、うまくできません。 サブルーチンを使うのはほとんどはじめてなのでどう使えばいいのかさえ良くわかっていません。 なにかアドバイスがありましたらお願いします。

  • Fortranのフォーマット

    Fortranのフォーマットで、下記のように表示したい場合どうしたらよいのでしょうか?桁落ちしてもかまいません。 実数型(f)で表示した場合、0.が抜けてしまいます。 指数表示はしません。 0.0001 5.4321 1234.5 よろしくお願いします。

  • 数値計算で生じる小さなごみ

    ある問題を数値的に解こうと思いFortranでプログラムを組んでいるのですが、倍精度の数値計算で以下のような事が起きて困っています。 プログラムの中で A=B-C*D (変数は全て倍精度実数変数) のような代入文があるのですが、 write(*,*) B,C,D とすると、0.250000000000000 0.500000000000000 0.500000000000000 と表示されるのですが、 write(*,*) B-C*D や write(*,*)A では-1.79570984817912D-017 などと表示されます。(この数値に意味はないのでしょうが、同じシチュエーションでは常に同じ値が表示されます) 入力した値の精度外の「誤差」ですが、どこに原因のある問題でしょうか? 因に使っているコンパイラはintelのサイトで入手したフリーの評価版ifc ver.6 でそれにpentium4に最適化するオプションをつけてコンパイルしています