
先ほどC言語のプログラムで
#include <stdio.h>
main()
{
double d_1,d_2,d_3;
d_1=0.1;
d_2=0.001;
d_3=d_1-d_2;
printf("%22.16g-%22.16g=%22.16g\n",d_1,d_2,d_3);
d_1=1.0;
d_2=1.000000000000001;
d_3=d_1-d_2;
printf("%22.16g-%22.16g=%22.16g\n",d_1,d_2,d_3);
d_1=1.0;
d_2=0.00000000000000001;
d_3=d_1-d_2;
printf("%22.16g-%22.16g=%22.16g\n",d_1,d_2,d_3);
}
というのを作ったのですが結果が
0.1 - 0.001 =0.099
1 - 1.000000000000001 =-1.110223024625157e-15
1 - 1e-17=1
でした。この結果はどういう意味なのでしょうか?
初め以外の二つはeが出てきたり、数字の羅列だったりなぜこうなったのか分からないのです?
教えてください。お願いします。
No.1ベストアンサー
- 回答日時:
計算機は小数(浮動小数)も2進数で保持します。
このとき、2を何度掛けていっても整数にならないものに関しては、誤差を丸めて保持することになります。
0.001くらいであれば誤差が非常に小さいため、計算結果に影響を与えることは
ありません。身近にあるPCに搭載されているCPUではdouble型の仮数部が
52ビットということで、10進にして15.35桁程度しか保持できません。
ということで、16桁以上の計算が出てくる場合は、誤差の影響を受けることに
なります。
1-(1+10^(-15))=-10^(-15)と計算されそうですが(1+10^(-15))は16桁で
表現するため、丸めた誤差が無視できないものとなり、上記の値が出てくることに
なります。
また、1-10^(-17)は18桁であり先ほどの15.35桁では表現できないので、
計算機では1として保持されます。
ちょっと解り難い説明ですが、いかがでしょうか。
No.2
- 回答日時:
浮動小数点数はa×10のb乗という形で値を保持します。
1e-17 と表示されたら、1×10の-17乗と読み替えればいいです。
つまり、
1e-17→0.00000000000000001
-1.110223024625157e-15→0.000000000000001110223024625157
ということです。
%g のかわりに %f を使うと結果が変わる事もあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
有効数字について 以前質問をし...
-
O(n log n)について2
-
16進数とかわからないです
-
”/”を使わずに割り算したいんで...
-
double型からfloat型への型変換...
-
2進数の足し算(C言語)
-
VBAのINT関数について
-
除算を使わずに10で割りたい。
-
「Aに対するBの割合」と「Aに対...
-
Aの値からBの値を除するとは??
-
2÷3などの余りについて
-
隣接行列を読み込んで有向グラ...
-
複数桁10進数の*桁目だけを抽出...
-
Enterキーを押されたら次の処理...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 エラーの原因がわからな...
-
有効数字(中学1年 東京書籍)
-
変数のスコープ
-
プログラムでの数字につく”f”の...
-
信頼区間の1.96や1.65ってどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
有効数字について 以前質問をし...
-
c languageで 簡単な質問があ...
-
ExcelでPC(パソコン)によって...
-
O(n log n)について2
-
2進数の足し算(C言語)
-
16進数 加算 減算 C言語
-
EXCELの関数"STDEV(標準偏差)"...
-
三菱シーケンサ(Aシリーズ)で...
-
VB.net Double と...
-
MATLABでの行列の全要素の和
-
除算を使わずに10で割りたい。
-
floatの有効桁数
-
”/”を使わずに割り算したいんで...
-
ExcelのINT関数の計算結果がお...
-
VBAでミリ秒まで出力する方法
-
VB6.0での小数点の扱いについて
-
Fortran において変数の定義
-
計算の丸め誤差の解消について
-
C言語について質問です。
-
CRCの計算方法について
おすすめ情報