質問するログイン新規登録

回答編集履歴

2

説明の修正

2019/05/27 20:48

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  > その”4桁の小数”というのが10進数での4桁かどうかが知りたいのですが。。。
16
16
 
17
- まず、VBAにおいて、内部的には整数も小数もすべて2進数です。
17
+ まず、VBAにおいて、内部的には整数も小数もすべて2進数です。演算も2進数で行います。
18
18
  表示するときに、10進数に変換して表示しています。
19
19
 
20
20
  2進数の整数の演算は誤差は生じませんが、

1

説明の追加

2019/05/27 20:48

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  簡単にいうと、
2
2
 
3
3
  通貨型は、
4
- 内部的には整数(LOngLong型)で格納されていて、
4
+ 内部的には整数(LongLong型)で格納されていて、
5
5
  表示するときに、末尾から4桁目に小数点を表示している。
6
6
 
7
7
  ということだと思います。
@@ -10,4 +10,14 @@
10
10
  内部的には、1899/12/30を起点とする経過日数が倍精度浮動小数点(Double型)で格納されていて、
11
11
  表示するときに、書式設定にあわせて日付として表示している。
12
12
 
13
- と同じことです。
13
+ と同じことです。
14
+
15
+ > その”4桁の小数”というのが10進数での4桁かどうかが知りたいのですが。。。
16
+
17
+ まず、VBAにおいて、内部的には整数も小数もすべて2進数です。
18
+ 表示するときに、10進数に変換して表示しています。
19
+
20
+ 2進数の整数の演算は誤差は生じませんが、
21
+ 10進数の小数を正確に2進数の小数に変換できないので近似値の2進数になるため誤差が生じます。
22
+
23
+ 通貨型の”4桁の小数”部分は、"2進数の整数"です。それを10進数の小数のように表示しているということです。