No.2ベストアンサー
- 回答日時:
> どういう仕組みで異なるのでしょうか。
有限精度で表現するために、割り切れない数や無理数などでは当然誤差が出ます。これは、普通に紙の上で10進数で計算した場合でも同じことがいえます。(どこで、どう丸めるかの差です)
> double a=0.0と宣言し、
> 途中a=2.0と代入を行った場合も
> if(a==2.0)は使用方法が間違っているのでしょうか?
いいえ、間違っていません。
一致するかどうかの判定には等価演算子を使うのが基本です。演算結果に誤差が出るのは事実ですが、何をもって等しいとするかは状況次第ですので、常に最適な方法があるわけではありません。
数学や理科で有効桁数というのを習ったと思います。現実に扱うほとんどの実数値は、計算誤差以前に元の値自体が測定誤差を含んでいます。それを無視して計算誤差だけに配慮しても無意味です。
No.1
- 回答日時:
問題になるのは「対象とする環境で正確に表現できない値を使う」場合です. まあ, 「正確に表現できる値しか使わない」場合に問題にならないのは当然ですが.
例えば, 有効数字部を 2進数で表現する (普通の) 環境を考えてみましょう.
この環境において, 2.0 は正確に表現できるので == で比較しても問題ありません. しかし, n/10 は n % 5 != 0 のときには正確に表現できないので, 0.1 + 0.9 == 1.0 かどうかはわかりません. もっといえば, 0.1 * 10 == 1.0 かどうかもわからなかったりします.
ご回答ありがとうございます。
例えば、double a = 3と宣言した場合、
丸め誤差が発生していて、
if(a==3)の条件文に入れたい場合入らないのでしょうか?
あるいはif(a==3.0)と右辺をdouble型にすればよろしいのでしょうか?
(int)aでキャストするともしかしたらa=2.99999999・・・の場合、
(int)a=2となってしまい条件文に入らないと思います。
どうするのがベストなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# ある線が円の範囲に入っているかの計算 1 2022/12/07 16:14
- C言語・C++・C# C++で割り算の結果を昇順に出力するプログラムを作りたいのですが、例えば(double)100000 3 2022/07/15 17:46
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C言語のマクローリン展開ローラン展開のコードについて 3 2022/12/15 14:45
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
16進数 加算 減算 C言語
-
C言語プログラミングにて、arct...
-
”/”を使わずに割り算したいんで...
-
時刻の比較
-
パソコンで階乗を計算
-
0.1の10000回の累積
-
C言語でセルオートマトンを作成...
-
ExcelでPC(パソコン)によって...
-
VB6のFIX関数での誤差について
-
O(n log n)について2
-
ExcelのINT関数の計算結果がお...
-
255の2の補数、B'00000001'が-...
-
floatの有効桁数
-
floatの有効桁数がわからない
-
16進数とかわからないです
-
距離から緯度経度を求める方法
-
VB6.0での小数点の扱いについて
-
2進数データのビット演算
-
VB.net Double と...
-
ftoa関数の作成
マンスリーランキングこのカテゴリの人気マンスリー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について
-
コンピューターは指数関数をど...
-
乱数 なぜ剰余を使うのか
おすすめ情報