A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
メモリ?
倍精度浮動小数点は以下の構成になっています。
(-1)^符号部 * 2^(指数部-1023) * (1.仮数部)
符号部:1[bit]
指数部:11[bits]
仮数部:52[bits]
計:64[bits]
例)[符号部,指数部,仮数部]で書きます
1.0は[0,1023,0000....0b]
0.5は[0,1022,0000....0b]
1.5は[0,1023,1000....0b]
○本題
15^15は
437,893,890,380,859,375
で二進数表記した場合
110 0001 0011 1011 0110 0010 1100 0101 1001 0111 0111 0000 0111 1110 1111b
式『(-1)^符号部 * 2^(指数部-1023) * (1.仮数部)』を当てはめると
下記になります。
(-1)^0 * 2^58 * 1.10 0001 0011 1011 0110 0010 1100 0101 1001 0111 0111 0000 0111 1110 1111b
符号部は素直に0
指数部は58 = (1081 - 1023)
仮数部は10 0001 0011 1011 0110 0010 1100 0101 1001 0111 0111 0000 0111 1110 1111b
ここでちょっと見てください。
58[bits]では52[bits]を6[bits]超えています。
この場合、浮動小数点では影響の小さい(値の小さい)下位のビットを四捨五入します。
10 0001 0011 1011 0110 0010 1100 0101 1001 0111 0111 0000 0111 11(10 1111)b
カッコ内が四捨五入対象(その中の最上位ビットが0or1)
よって
仮数部は
10 0001 0011 1011 0110 0010 1100 0101 1001 0111 0111 0000 1000 00b
となります。
これが誤差の原因です。
確かめ算をします。
[0,1081,1000010011101101100010110001011001011101110000100000b]
は
(-1)^0*2^(1081-1023)*(1.1000010011101101100010110001011001011101110000100000b)
=2^58*(1.1000010011101101100010110001011001011101110000100000b)
=2^6*2^52*(1.1000010011101101100010110001011001011101110000100000b)
=2^6*11000010011101101100010110001011001011101110000100000b
=11000010011101101100010110001011001011101110000100000000000b
=437,893,890,380,859,392
IA-32アーキテクチャではサイズを大きくした、拡張倍精度浮動小数点などもありますが。
(x87 FPU命令ですが)
結局は破綻する箇所が先送りされるだけです。
拡張倍精度浮動小数点は、コンパイラ独自拡張や機械語でないと使用出来ません。
インラインアセンブラもOKですが。
Cのdoubleに持ってきた瞬間に誤差が出ます。
※ 途中数値間違っていたらごめんなさい
No.1
- 回答日時:
有効桁数などで検索して下さい。
double 型でだいたい 15桁くらいまでしか表現できなかったはずです。
15^15 = 437893890380859375
かな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数学の問題の解き方を教えてください! 3 2022/11/02 17:32
- 統計学 直線の傾き(回帰係数)から相関係数を計算できるのでしょうか? 2 2022/09/16 19:28
- JavaScript 最小二乗法 2 2023/01/01 20:57
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 物理学 測定値と理論値の誤差について 交流回路の実験でRL回路、RC回路、RLC直列回路の周波数を上げた時の 1 2022/05/22 23:37
- 統計学 統計学の問題です よろしくお願いします 回帰直線 次のデータから集計表を作成し,以下の問いに答えよ。 2 2023/01/31 23:36
- 統計学 統計学の問題です よろしくお願いします 回帰直線 次のデータから集計表を作成し,以下の問いに答えよ。 1 2023/01/31 18:55
- 物理学 RC直列回路の実験で理論値と測定値の時定数を計算した結果±12%と大きな誤差が生じたのですがその原因 3 2022/09/29 22:32
- 物理学 時定数で実験で求めた値と理論値に誤差が生じる理由はなんですか?自分は実験で使用した抵抗やコンデンサの 3 2022/09/26 11:32
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
関連するカテゴリから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について
-
コンピューターは指数関数をど...
-
乱数 なぜ剰余を使うのか
おすすめ情報