
No.3ベストアンサー
- 回答日時:
doubleは浮動小数点型で、浮動小数点型は大きな値から小さな値までを扱えるように考え出された科学技術計算用のデータ形式で有効桁を犠牲にして扱える値の範囲を宇宙の広さから原子の大きさまで幅広く扱えるようにしています。
>小数点以下は何桁? 整数部分は何桁?
と言うような精度では表せません。
http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95% …
http://www.cc.kyoto-su.ac.jp/~yamada/pB/float.html
仮数部が15ビットだと精度は2進→10進変換が入るので10進で4.8桁程度です。実用レベルで有効桁は4桁ぐらいですかね。小数点の位置は関係ないです。
例えば、1.0012だとしたら1.001xで最後の2は信用できないです。10012だとしても1001xで最後の2は信用できないです。わかりますかね?
有効桁を超えた計算も出来ません。100000+1は100000です。1は有効桁外ですから。
そ
あと、PICの場合は浮動小数点演算回路を持っていないCPUですので固定小数点のint型の数百倍かそれ以上に計算速度が遅くなります。利用はお勧めできません。
この回答への補足
すいません一つ気になることを思いついたので教えてください。
doubleは4桁しか扱えない(正確でない)ということは、だったら同じ24ビットのunsigned short long型を使って計算(掛け算など)した方が扱える桁数も多いし、正確な数字も出るということでしょうか?
詳しい説明ありがとうございました。ペコリ(o_ _)o))
・・・思っていたより全然桁数は少ないのですね・・・(TOT)
勉強になりました。ありがとうございます。
No.4
- 回答日時:
>すいません一つ気になることを思いついたので教えてください。
>doubleは4桁しか扱えない(正確でない)ということは、だったら同じ24ビットのunsigned short long型を使って計算(掛け算など)した方が扱える桁数も多いし、正確な数字も出るということでしょうか?
その通りです。
例えば金額計算でdoubleやfloatの浮動小数点型を使うプロのプログラマをいません。誤差があるので使い物に成りませんから。24ビットのunsigned short longの固定小数点型だと1677716で確実に10進で6桁まで扱えますからね。
じゃあ、浮動小数点型をどういうときに使うかというと1kmは原子で約何個分かと言う計算が固定小数点は値の範囲が広すぎて出来ませんが浮動小数点では可能です。
回答ありがとうございます。
なるほど!! そうだったのですか・・・小数計算だからとdoubleを使ってしまいました・・・σ(^◇^;)ヒヤアセ unsigned short longを使ってやろうと思います。ありがとうございました。ペコリ(o_ _)o))
No.2
- 回答日時:
まずは「浮動小数点数」とはどういうものか勉強してください。
浮動小数点数では、「仮数部」と「指数部」に分けて数値を表現します。
分かりやすく、10進数で説明すると、有効数字5桁の浮動小数点数では
0.012345を「1.2345×0.01」(=1.2345×10の-2乗)
123450を「1.2345×100000」(=1.2345×10の6乗)
と表現します。1.0000~9.9999の範囲の「仮数部」と、それからを何桁ずらすのかを意味する「指数部」の組み合わせです。
123456(1.23456×10の6乗)や0.123456(1.23456×10の-1乗)といった数値はこれらの数値は仮数部が6桁ありますので、仮数部の有効数字が5桁だと表現できません。
でも、有効数字が5桁までなら、非常に大きな数値も小さな数値も、扱うことができます。
1234500000000 は、1.2345×10の12乗だし、
0.00000012345は、1.2345×10の-7乗です。
ですから、浮動小数点数では「小数点以下何桁」「整数部分は何桁」といった概念はありません。扱える数字の範囲は「上から数えて何桁」って
形になります。
以上、10進数で説明しましたが、2進数でも原理は同じです。
で、PICC lite のマニュアルによると、24bit double は仮数部15+1ビット、指数部8ビットとなってます。
2進数で16bitの精度がありますから、10進数で考えるなら「有効数字は約5桁」です。
0.012345や、12345000 は扱えますが、12345600 や 0.0123456 を扱うには精度が足りないことになります。
この回答への補足
すいません一つ気になることを思いついたので教えてください。
PICC liteでdoubleは約5桁しか扱えない(正確でない)ということは、だったら同じ24ビットのunsigned short long型を使って計算(掛け算など)した方が扱える桁数も多いし、正確な数字も出るということでしょうか?
詳しい説明ありがとうございました。ペコリ(o_ _)o))
なるほど そういうことだったのですか・・・素人には難しいですねσ(^◇^;)ヒヤアセ
完ぺきではないと思いますが、ある程度理解できました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# 浮動小数の数値文字列化 1 2022/04/18 15:15
- C言語・C++・C# C言語について。 5 2023/06/27 18:37
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# (C言語)めちゃくちゃな値になってしまいます。 5 2022/08/13 11:55
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 1 2023/01/31 18:53
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 5 2023/01/31 23:35
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- PDF C#でfloatを整数部、小数部とも桁数固定で文字表示したい 2 2022/07/28 09:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c languageで 簡単な質問があ...
-
ExcelでPC(パソコン)によって...
-
有効数字について 以前質問をし...
-
符号誤り率の計算は例題でどの...
-
三菱シーケンサ(Aシリーズ)で...
-
計算に誤差が出る?
-
EXCELの関数"STDEV(標準偏差)"...
-
加算と減算で乗算と除算を表現...
-
O(n log n)について2
-
色の判定
-
16進数 加算 減算 C言語
-
パソコンで階乗を計算
-
floatの有効桁数
-
ExcelのINT関数の計算結果がお...
-
10進数での「25」が2進数では「...
-
Excel 計算結果誤差
-
2進数の足し算(C言語)
-
大きすぎる数値になるとE+にな...
-
浮動小数演算は実行環境の変化...
-
丸め誤差と桁落ちの違いとは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelでPC(パソコン)によって...
-
O(n log n)について2
-
有効数字について 以前質問をし...
-
c languageで 簡単な質問があ...
-
ExcelのINT関数の計算結果がお...
-
EXCELの関数"STDEV(標準偏差)"...
-
三菱シーケンサ(Aシリーズ)で...
-
VB.net Double と...
-
計算の丸め誤差の解消について
-
除算を使わずに10で割りたい。
-
2進数の足し算(C言語)
-
16進数 加算 減算 C言語
-
”/”を使わずに割り算したいんで...
-
CRCの計算方法について
-
VB6.0での小数点の扱いについて
-
VBAでミリ秒まで出力する方法
-
時刻の比較
-
2進数データのビット演算
-
教えて小数点の比較!(C言語)
-
C言語 型変換のタイミング
おすすめ情報