質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
浮動小数点

浮動小数点は、コンピュータが数値を扱う際に実数を表現する方法のひとつです。 数値を、それぞれの桁の値が並んでいる仮数部と、小数点の場所を示す指数部で表します。

Q&A

解決済

2回答

1019閲覧

桁落ちの誤差が分かりません

terataitai

総合スコア32

浮動小数点

浮動小数点は、コンピュータが数値を扱う際に実数を表現する方法のひとつです。 数値を、それぞれの桁の値が並んでいる仮数部と、小数点の場所を示す指数部で表します。

0グッド

1クリップ

投稿2021/11/17 16:56

編集2021/11/17 16:58

桁落ち誤差である数を近い数で引くと桁落ちするというのが分かりません。
桁が落ちない話 - Qiitaの「桁落ちの例」に有効数字5桁で

√2+23/4567⇒(1.4142+0.0050361)×10⁰

と計算した後、-√2すると結果が0.0050×10⁰=5.0×10⁻³になり有効数字が2桁になるので真の値を5桁に丸めたもの(5.0361×10⁻³)と比べて不確かになっているというような事が書かれているのですが、桁落ちの原因は近い数で引くことが原因とありますが、自分には最初に1.4142+0.0050361の計算結果を有効数字5桁で丸めることで361の部分が失って不確かな結果になったように思えます。自分の解釈のどこが間違っているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

「桁落ち」は、「有効数値5桁同士の演算をしたのに有効数値1桁になってしまった」のように有効桁数が減少することを指します。
ほぼ値の等しい数の引き算(あるいは絶対値がほぼ等しい異符号の数の足し算)で発生します。

自分には最初に1.4142+0.0050361の計算結果を有効数字5桁で丸めることで361の部分が失って不確かな結果になったように思えます。

それは正しいのですが、それは「桁落ち」とは言わず「情報落ち」と言います。演算結果の有効桁数は5桁のままで減少していないので。

参照されたページの説明が誤解を招く説明のような気はしますね。
有効数値5桁の、123450000 と 123460000 の差は 10000 ですが、有効な数値は先頭の1だけで残りの 0 は位取りの意味しか無いです。これに 1 を足した場合、10001 になるというのは間違い。1桁に丸めて 10000 です。まあ、普通は有効桁数と位取りを分けて、1 x 10^4 とか 1E4 と書くと思いますが。

参考:Wikipedia「誤差」

投稿2021/11/18 09:32

otn

総合スコア84804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自分には最初に1.4142+0.0050361の計算結果を有効数字5桁で丸めることで361の部分が失って不確かな結果になったように思えます。

無限精度の演算ができるのであれば、桁落ちも発生しない、というのはそのとおりですですが、それは桁落ちの現象とは別の話です。

投稿2021/11/18 00:16

maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/11/18 00:19

10進5桁で丸めて演算しているのに、「その精度すら保てなくなる」というのが桁落ちという言葉の意味です。 そもそも誤差の発生しない無限精度演算の事を考えても仕方ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問