VBAの勉強をしています。
データ型の値で分からないところがあるので質問させていただきます。
①1.4E-45 って1.4×(10の-45乗)のことでしたっけ? すると、3.4E38 は、3.4×(10の38乗)?
②浮動小数点数型って何? 整数型のように -○○ ~ ○○ のような形ではなくて、(負の値)(正の値)と分けて範囲を定めている意味がよく分からない。そもそも、単精度浮動小数点数型と倍精度浮動小数点数型の違いが分からない。
③整数型の -32,768~32767 の「,」ってただの区切り点ですよね? 1,000円みたいな。なぜ、左は区切り点を入れてて右は入れてないのだろう。ただの本の誤植?
質問が大雑把でいたらぬ点があると思います。いろいろご指摘していただけるとありがたいです。
どうぞよろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
固定小数点数と浮動小数点数の説明が少しまずいようですね・・・
1.まず,現在のコンピュータの内部表現は全て2進数(0,1)です.
また,VBAの「数値」の記憶方式は固定長です.
2.固定小数点形式とは,小数点の位置が固定しています.
ただし,記憶節約のため小数点そのものは記憶データにはありません.
それにVBAやCでは固定小数点形式のデータは,整数型のみです.
だから,小数点の位置は右端で小数部は0桁です.
PL/I言語などでは,整数部Nbit小数部Mbitという形式があります.
ただし小数点は記憶データの中にはありません.小数点位置は
コンパイラとプログラマが知っていれば良いのですから.
3.浮動小数点形式は実数を符号,仮数部,指数部に分けて記憶する方式です.
-0.15625→(2進数)-0.00101→(2進浮動)[符号:-][仮数部:1.01]*2^[指数部:-11]
として,[符号][指数部][仮数部] と並べた2進数を記憶します.
ただし,仮数部と指数部の順序や,指数部を下駄はかせ,仮数部を1bitケチ表現,
などの工夫をして記憶域の節約と大小比較が整数形式と同じになるようにしています.
ついでに double変数 d=1 (整数型) など単なる代入に見えますが,
記憶形式の変換を伴いますので時間がかかります.d=1.0 とすべきです.
補足.浮動小数点数は仮数部が有限桁なので有効桁数はもちろん有限ですが,
仮数部は「2進小数」なので,10進数小数で小数最下位桁が5以外の数は
正確には表せません.なお,0は,指数部=0…0,仮数部=0…0となってます.
浮動小数点数は正負対称に表現できますが,
整数=2進固定小数点数は,2の補数表示という方式を使いますので
16bitの場合-32768(=1111 1111 1111 1111)~+32767(=0111 1111 1111 1111)
といったように負の数が1つ多く表現できます.
すみません、期限中に理解ができませんでした。でも何度も読ませてもらってます。
http://oto-suu.seesaa.net/article/204829267.html
分からないところを一つずつ調べています。ありがとうございました。
No.2
- 回答日時:
もちろん、0は含まれます。
その書き方は、浮動小数点数が表現できる値のうち、正,負,0 (,それ以外の特別な値)に分けたうちの、正負についてだけ述べているようです。
> 仮数も指数も有限なため、全ての実数を表現できるわけではありません。
と書いたように、コンピュータでの浮動小数点数には、大きさ、精度に限界があります。
そのため、「0の次の値。絶対値の最も小さい値」というものも存在します。
それが例えばSingleなら1.401298E-45 です。これより絶対値が小さい値(例えば 3.0E-50)はSingleでは使えません。
なお、この範囲の値すべてが使えるわけではありません。
仮数が有限なため、それ以上に細かい値は使用できません。精度の範囲に丸められます。
1.4012985432E-45 は > 1.401298E-45 なので、Singleの範囲ですが、精度が範囲外なので、後の5432まで表現できません。
以前にも書いて下さった「仮数も指数も有限」っていう意味がわからなかったのですが、範囲が決まっているということは有限ということなのですね。
浮動小数点の”大きさ”というのは絶対値の一番大きい数字のことで、精度というのは絶対値の一番小さい数字の指数のこと?
例えば、正の範囲が1.23E5~2.34E-5だったとすれば、
123000.000000~0.000234 が範囲で、仮数の有限範囲はE3で、最小値は0.000234。なので、0.0002339は丸めこまれても使えない。123000.0000009は最大数範囲を超えているので使えないはずだが、仮数の精度はE3なので、それより小さい数字は丸めこまれるので、123000.000000になるので使える。
No.1
- 回答日時:
(1) そうです。
(2) http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95% …
数値を 「仮数 * nの指数乗」 の形にしたデータです。
仮数も指数も有限なため、全ての実数を表現できるわけではありません。
単精度、倍精度とは、仮数や指数をどれくらいにするかの違いです。
その資料にどう書いてあるかわかりませんが、通常は正負で範囲に違いはありません。
(3) そうです。
VBAで使うときは、カンマは不要です。付いていると違う意味になります。
左右でのカンマの有無については、わかりせん。誤植の類でしょう。
文字制限のため全部書けなかったので、補足に書きました。続きです。
正負の問題ですが、たとえばSingleの場合、こう書かれてあります。
(負の値)-3.402823E38~-1.401298E-45
(正の値)1.401298E-45~3.402823E38
ややこしいので、理解するために仮に
(負の値)-1E1~-1E-2
(正の値)1E-2~1E1 と定めてみる。
負の値は、-1(10)~-1(0.01) = -10~-0.01
正の値は、 1(0.01)~1(10) = 0.01~10
つまり、範囲は-10~10で、浮動小数点はE2まで。
こんな理解で大丈夫でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- C言語・C++・C# 3つの倍精度浮動小数点値の平均を求めて、3つの引数全てを平均値に変更するメソッドを作成し、キーボード 1 2022/07/13 16:04
- C言語・C++・C# C言語について。 5 2023/06/27 18:37
- Excel(エクセル) 数式→数値固定する方法ありますか? 5 2023/06/18 15:22
- 統計学 母集団分布を平均 μ, 分散 σ2 の正規分布と想定し, 母集団から無作為抽出した標本のデータ(標本 4 2023/01/30 20:25
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 1 2023/01/31 18:53
- ソフトウェア エクセル_データ処理_変化点検出について 1 2022/09/20 18:25
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 5 2023/01/31 23:35
- 数学 至急!次の問題を教えてください。 ある市では、消防車の出動要請が平均して1時間当たり1回ある。 多く 2 2022/11/18 20:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
ExcelでGaussian fittingをした...
-
ハッシュテーブル(連想配列)が...
-
変数名の取得
-
rand関数の割合変更
-
power BI クエリエディター 〇...
-
変数に代入してある数値を表示...
-
PysimpleGUIでデータベースを作る
-
Request.QueryString への値の...
-
VB.NETでコンボボックスの1行目...
-
値を返さないコード パス
-
Excel VBA 複数選択したリスト...
-
RGB値をL*a*b*に変換したい
-
ユーザーフォームのテキストボ...
-
C言語では0は・・・
-
textboxとLabelを動的に変更する
-
RegisterClassExのエラー原因
-
ListBoxでオートフィルター表示
-
コンボボックスで選択した項目...
-
代入したのに値が更新されない...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
マクロ 特定のセル値のみクリ...
-
VB.NETでコンボボックスの1行目...
-
変数名の取得
-
値を返さないコード パス
-
Excel VBAのリストボックスの値...
-
VB初心者。小数点以下の表示で...
-
ハッシュテーブル(連想配列)が...
-
textboxとLabelを動的に変更する
-
PL/SQLでのTO_DATEの時間取得に...
-
VB.NETでアクティブなformを知...
-
Excel vba ユーザーフォームテ...
-
マクロで奇数と偶数の値を2か所...
-
DataTableに対するLINQについて
-
【C++/CLI.NET】コンボボックス...
-
[VBA]選択範囲の下から上に処理...
-
範囲が指定されている乱数について
-
[VB.net] DataGridViewのコンボ...
-
変数に代入してある数値を表示...
-
vbscriptを使いexcelを参照して...
おすすめ情報
①、②は了解しました。VBAで使うときはカンマは不要、覚えておきます。
③http://detail.chiebukuro.yahoo.co.jp/qa/question …
浮動小数点と固定小数点との違いは単なる小数点の表記の違いなのですね。
指数乗の数ではどれだけ細かい値まで正確に出せるかが変わってくる。
単精度と倍精度の違いは、整数型と長整数型が格納できる容量がちがうように、小数点以下の数値がどれだけ換算できるかの容量が変わってくる。
あちこちに書いてすみません。お礼の続きです。
おかしいな?そうすると0の値は範囲に含まれてない?? 0が含まれない範囲なんておかしいと思いし?まだ理解の仕方が足りないような。。
初っ端から、固定長でつまずいてしまいました。「コンピューターで、レコード(数項目からなる一つの処理単位)の長さが一定である形式。処理が簡単で一般的。」レコードって何?? 頑張ってググってみます。のでお時間が許せばもう少しお付き合いください。