No.4ベストアンサー
- 回答日時:
IEEE754の単精度浮動小数点数では、符号1ビット、指数部8ビット、仮数部23bitの32bitで数値を表現しています。
(厳密に言えば、Cの言語仕様では、floatの内部表現がどうなっているかは規定されていませんが、今時大抵のコンピュータでは、このIEEE754に基づいた内部表現が使われていますので、32bitの内訳がこれ以外の環境を考える必要はまずないと思います)
さて、この仮数部23bitに対し、最上位に暗黙の1が追加された24bitを仮数として浮動小数点表記を行うわけですが、
ここで安直に「だから有効精度は24bit」にはならないことに注意してください。最上位は1で固定なのですがから、24bit分の表現能力は持っていないのです。
このとき、表現できる数値の最小差は、2進数表記で
1.0000_0000_0000_0000_0000_000b: 二進数で1の後に0が23個(仮数部表現23bitの値が0)
1.0000_0000_0000_0000_0000_001b: 二進数で1の後に0が22個で1(仮数部表現23bitの値が1)
になります。(桁数をわかりやすくするため、途中に_を入れました)
これは、10進数で表すと、
1と1.00000_01192_0929になります。つまり、
0.00000_01192_0929 がIEEE754単精度浮動小数点数の精度です。
これを、
・ほぼ0.00000_01 が表現可能だから、精度は7桁と見る
・厳密には0.00000_01は表現できず、違いがちゃんと表現可能なのは、0.00000_1 までなので、精度は6桁と見る
のどちらと取るかは考え方の違いになります。
これを言い換えれば、log_10(2^23)=6.92369を元に、
ほぼ表現可能な桁数を考えて、四捨五入した7桁を精度とするか、
厳密に表現可能な桁数を考えて、切り捨てた6桁を精度とするか、
という話になります。
No.3
- 回答日時:
いろいろなサイトを見たそうなので現在の標準的な浮動小数点フォーマットがIEEE754という形式だということは知っていると思います。
サイト例:Wikipedia
http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95% …
IEEE754のフォーマットでは32ビットを
1ビット(符号)、8ビット(指数部2進数)、23ビット(仮数部2進数)
に割り当てます。
ここで仮数の部分が有効数字を決めるので単純に10進数での有効桁数の目安は
LOG10(仮数部の整数最大値)で計算します。
23ビットで考えると LOG10(2^23) = 6.92…となります。
これは6桁は十分表せるが7桁までは届かない、ということになります。
一方、このIEEE754という形式はがんばって精度を上げようということで仮数部に暗黙の1ビットというのをもっています。
指数部が全部0で無い場合、この暗黙の1ビットが最上位についたように取り扱うので24ビットに見えます。
すると LOG10(2^24)= 7.22…となり 7桁の有効桁になります。
こうみると厳密には6桁でしか表現できない部分もあるので安全をみて6桁という人もあれば、おおむね7桁表現しているんだから7桁とよんでもいい、という人も出てくるのでしょう。
仕事で演算を多用するときは、そんなあいまいな部分は使えないので6桁と考えて扱うか、大抵は倍精度(64ビット長)の形式を使うはずです。
その場合も仮数部は52ビットですので安全をみて LOG10(2^52) = 15.65…→ 15桁を有効桁と考えて処理します。
IEEE754ではない固有のフォーマットを使用している場合は
LOG10(2^仮数部ビット数)
で桁数の目安を計算してみてください。
No.2
- 回答日時:
浮動小数点数の内部構造は1つではなく、複数の形式が
有ります。
浮動小数点数
http://ja.wikipedia.org/wiki/浮動小数点数
浮動小数点数型と誤差
http://www.cc.kyoto-su.ac.jp/~yamada/pB/float.html
>float 型の精度(有効桁数)は2進数にして 24 (=23+1)
> 桁であり,10進数では約 7 桁となる.
また、作成者(メーカー)やバージョンによっても異なる
場合があります。
C言語 浮動小数点の最大値 最小値
http://simd.jugem.jp/?eid=18
>ちなみに、浮動小数点の有効桁数ですが
>VC8では、float型が6桁、double型とlong double型が
>15桁となっています。
>
>C++Builderを見てみると、
>float型が6桁、double型が15桁、long double型が18桁
>となっていました。
従って有効桁数は、何を使用するかによって変わります。
No.1
- 回答日時:
includeファイル: float.h に仮数部のbit数: FLT_MANT_DIG が定義されています。
VC++2010β2では24でした。24bitで表現されているなら...わかりますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 高校 高校化学、気体、温度の有効数字 3 2023/04/02 11:39
- PDF C#でfloatを整数部、小数部とも桁数固定で文字表示したい 2 2022/07/28 09:37
- 化学 有効数字の問題にです 4 2022/08/02 22:33
- 高校 有効数字計算 確定した値を含む 2 2023/01/18 06:03
- 化学 有効数字の取り扱いについて 高校化学では、測定値同士の計算結果の有効数字は、測定値に合わせるようにな 4 2022/06/30 14:07
- 高校 この問題の(2)なぜ答えが有効数字1桁なんですか?自分は有効数字2桁で3.7×10^3にしました 2 2023/02/11 17:23
- 計算機科学 この問題なぜ答えが有効数字2桁なんでしょうか、問題の数字は有効数字3桁なのに… 5 2022/06/17 10:06
- 物理学 丸め 5 2022/08/04 12:25
- その他(教育・科学・学問) なぜ、0.50+0.50=1.0 になるのですか? 0.50も1.0も有効数字2桁ですので、計算結果 9 2022/11/17 18:12
- 高校 何故1番と3番では有効数字3桁で荒らされているのに、 4番は2桁なんですか? 2 2023/05/20 14:13
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
EXCEL16進⇒浮動小数変換したい
Excel(エクセル)
-
有効桁数とはなんですか?
数学
-
floatの有効桁数がわからない
C言語・C++・C#
-
-
4
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
5
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
6
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
7
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
8
計算の丸め誤差の解消について
C言語・C++・C#
-
9
unsigned long long 型のフォーマット指定子
C言語・C++・C#
-
10
ファイルやディレクトリの存在確認を行う方法
C言語・C++・C#
-
11
エクセル(Excel)で、数値を一定の有効数字で表示したいのですが…
Excel(エクセル)
-
12
#defineの定数を文字列として読み込む
C言語・C++・C#
-
13
C++ 構造体の一括初期化 {0}
C言語・C++・C#
-
14
float型とdouble型の変数の違いを教えてほしいです
C言語・C++・C#
-
15
HEX2BIN関数の使い方。
Excel(エクセル)
-
16
SQLで列名を変数にできないでしょうか
SQL Server
-
17
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
18
DoEventsがやはり分からない
Visual Basic(VBA)
-
19
python エラー
その他(プログラミング・Web制作)
-
20
自分の部署・担当を言うとき、どういう言い方が正しいでしょうか?? 会社のときは、弊社といいますが、部
その他(ビジネス・キャリア)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
有効数字について 以前質問をし...
-
VB.net Double と...
-
初心者です。 C++ついて
-
”/”を使わずに割り算したいんで...
-
VB6.0での小数点の扱いについて
-
10次の多項式を求めるプログラ...
-
コンピューターは指数関数をど...
-
float.h のテスト結果がおかしい
-
c言語 立方根
-
16進数 加算 減算 C言語
-
z80について
-
ExcelのINT関数の計算結果がお...
-
三角比の俯角の計算
-
c languageで 簡単な質問があ...
-
Log関数に関する質問
-
floatの有効桁数
-
Pythonについてなのですが、小...
-
ExcelでPC(パソコン)によって...
-
pythonの乗算の表示結果の差に...
-
BCD・HEX・BINについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
O(n log n)について2
-
ExcelでPC(パソコン)によって...
-
ExcelのINT関数の計算結果がお...
-
16進数 加算 減算 C言語
-
VB.net Double と...
-
floatの有効桁数
-
三菱シーケンサ(Aシリーズ)で...
-
c languageで 簡単な質問があ...
-
除算を使わずに10で割りたい。
-
VBAでミリ秒まで出力する方法
-
VBAでの割り算の余りの求め方
-
VB6.0での小数点の扱いについて
-
VB6のFIX関数での誤差について
-
有効数字について 以前質問をし...
-
100桁の計算ができなくて困って...
-
浮動小数演算は実行環境の変化...
-
EXCELの関数"STDEV(標準偏差)"...
-
BCD・HEX・BINについて
-
コンピューターは指数関数をど...
-
乱数 なぜ剰余を使うのか
おすすめ情報