整数の型
少数点を含む型
整数の型の種類
Byte
Integer
Long
LongLong(64bit版のみ)
整数の型の種類
Byte
Integer
Long
LongLong(64bit版のみ)
バイト型
サイズ:
1バイト
範囲
0~255
整数の型の種類
Byte
Integer
Long
LongLong(64bit版のみ)
長整数型
サイズ:
4バイト
範囲
-2,147,483,648~2,147.483,647
整数の型の種類
Byte
Integer
Long
LongLong(64bit版のみ)
整数型
サイズ:
2バイト
範囲
-32,768~32,767
整数の型の種類
Byte
Integer
Long
LongLong(64bit版のみ)
長整数型
サイズ:
4バイト
範囲
-2,147,483,648~2,147,483,647
整数の型の種類
Byte
Integer
Long
LongLong(64bit版のみ)
多倍長整数型
サイズ:
8バイト
範囲
-9,223,372,036,854,775,808 ~
9,223,372,036,854,775,807
Public Sub TestIntegerDataType()
End Sub
‘整数型の使用例
Public Sub TestIntegerDataType()
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
Dim bytData as Byte
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
Dim bytData as Byte
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
Dim bytData as Byte
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
Dim bytData as Byte
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
Dim bytData as Byte
Debug.Print "bytDataの内容:" & bytData
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
Dim bytData as Byte
Debug.Print "bytDataの内容:" & bytData
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
Dim bytData as Byte
Debug.Print "bytDataの内容:" & bytData
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
Dim bytData as Byte
Dim lngData as Long
Debug.Print "bytDataの内容:" & bytData
Debug.Print "lngDataの内容:" & lngData
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
Dim bytData as Byte
Dim lngData as Long
Debug.Print "bytDataの内容:" & bytData
Debug.Print "lngDataの内容:" & lngData
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
‘ ~ ( 省略 ) ~
bytData = 123
lngData = 8000
Debug.Print “変更後bytDataの内容:" & bytData
Debug.Print "変更後lngDataの内容:" & lngData
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
Dim bytData as Byte
Dim lngData as Long
Debug.Print "bytDataの内容:" & bytData
Debug.Print "lngDataの内容:" & lngData
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
‘ ~ ( 省略 ) ~
bytData = 110105
lngData = 8000
Debug.Print “変更後bytDataの内容:" & bytData
Debug.Print "変更後lngDataの内容:" & lngData
End Sub
'整数型の使用例
Public Sub TestIntegerDataType()
‘ ~ ( 省略 ) ~
bytData = 110105
lngData = 8000
Debug.Print “変更後bytDataの内容:" & bytData
Debug.Print "変更後lngDataの内容:" & lngData
End Sub
小数点を含む型の種類
固定小数点
Currency
浮動小数点
Single
Double
小数点を含む型の種類
固定小数点
Currency
浮動小数点
Single
Double
固定小数点とは、ある桁に小数点が
固定されている。
計算誤差をしてはいけないときに使
う。
小数点を含む型の種類
固定小数点
Currency
浮動小数点
Single
Double
浮動小数点は一定の範囲内の誤差で
近い数値に近似できる。
極端な数値を扱う分野で使う。
小数点を含む型の種類
固定小数点
Currency
浮動小数点
Single
Double
通貨型
サイズ:
8バイト
範囲
-922,337,203,685,477.5808
~922,337,203,685,477.5807
小数点を含む型の種類
固定小数点
Currency
浮動小数点
Single
Double
単精度浮動小数点数型 サイズ:4バイト 負の値の範囲 :-3.402823E38 ~ -1.401298E-45 正の値の範囲 :1.401298E-45 ~ 3.402823E38
小数点を含む型の種類
固定少数点
Currency
浮動小数点
Single
Double
単精度浮動小数点数型 サイズ:4バイト 負の値の範囲 :-3.402823E38 ~ -1.401298E-45 正の値の範囲 :1.401298E-45 ~ 3.402823E381.401298E-45
→1.401298× 10
-45
小数点以下がごく細かい
小数点を含む型の種類
固定少数点
Currency
浮動小数点
Single
Double
単精度浮動小数点数型 サイズ:4バイト 負の値の範囲 :-3.402823E38 ~ -1.401298E-45 正の値の範囲 :1.401298E-45 ~ 3.402823E383.402823E38
→3.402823× 10
38
すごく大きい桁
小数点を含む型の種類
固定小数点
Currency
浮動小数点
Single
Double
単精度浮動小数点数型 サイズ:4バイト 負の値の範囲 :-3.402823E38 ~ -1.401298E-45 正の値の範囲 :1.401298E-45 ~ 3.402823E38
小数点を含む型の種類
固定小数点
Currency
浮動小数点
Single
Double
倍精度浮動小数点数型 サイズ:8バイト 負の値の範囲 :-1.79769313486231E308 E308 ~ -4.94065645841247E-324 正の値の範囲 :4.94065645841247E-324 ~1.79769313486231E308 E308
Public Sub TestDoubleDataType() Dim data As Double
Dim i As Long data = 0 For i = 1 To 10 data = data + 0.1 Next i If data = 1 Then
Debug.Print "フフフ計画通り..." & data Else
Debug.Print "げせぬ..." & data End If
Public Sub TestDoubleDataType() Dim data As Double
Dim i As Long data = 0 For i = 1 To 10 data = data + 0.1 Next i If data = 1 Then
Debug.Print "フフフ計画通り..." & data Else
Debug.Print "げせぬ..." & data End If
Public Sub TestDoubleDataType() Dim data As Double
Dim i As Long data = 0 For i = 1 To 10 data = data + 0.1 Next i If data = 1 Then
Debug.Print "フフフ計画通り..." & data Else
Debug.Print "げせぬ..." & data End If
Public Sub TestDoubleDataType() Dim data As Double
Dim i As Long data = 0 For i = 1 To 10 data = data + 0.1 Next i If data = 1 Then
Debug.Print "フフフ計画通り..." & data Else
Debug.Print "げせぬ..." & data End If
Public Sub TestDoubleDataType() Dim data As Double
Dim i As Long data = 0 For i = 1 To 10 data = data + 0.1 Next i If data = 1 Then
Debug.Print "フフフ計画通り..." & data Else
Debug.Print "げせぬ..." & data End If
Public Sub TestDoubleDataType() Dim data As Double
Dim i As Long data = 0 For i = 1 To 10 data = data + 0.1 Next i If data = 1 Then
Debug.Print "フフフ計画通り..." & data Else
Debug.Print "げせぬ..." & data End If
あ
…ありのまま今起こったことを話すぜ
『
0.1を十回足しても1にならない。
でも表示だけは1のふりをする』
な
…なにを言っているのか
わからねーとおもうが、
おれも何をされたかわからなかった
…
頭がどうにかなりそうだった
…
計算誤差とか
チャチナもんじゃあ 断じてねぇ
もっと恐ろしいものの片鱗を味わったぜ
…
Public Sub TestDoubleDataType() Dim data As Double
Dim i As Long data = 0 For i = 1 To 10 data = data + 0.1 Next i If data = 1 Then
Debug.Print "フフフ計画通り..." & data Else
Debug.Print "げせぬ..." & data End If
Public Sub TestCurrencyDataType() Dim data As Currency
Dim i As Long data = 0 For i = 1 To 10 data = data + 0.1 Next i If data = 1 Then
Debug.Print "フフフ計画通り..." & data Else
Debug.Print "げせぬ..." & data End If
Public Sub TestCurrencyDataType() Dim data As Currency
Dim i As Long data = 0 For i = 1 To 10 data = data + 0.1 Next i If data = 1 Then
Debug.Print "フフフ計画通り..." & data Else
Debug.Print "げせぬ..." & data End If
整数の型
少数点を含む型
整数の型
少数点を含む型
Interger型さんディスンなよ
バカなの?
アホなの?
ワゴンなの?
質問1
質問にかこつけて
神ゲーをディスるとは
汚いな
さすが
Integer
汚い
回答1
俺はこれで
Integer型
嫌いになったな
俺は中立の立場で
見てきたけど、
やはり
Long型中心に
いったほうがいい事が
判明した
回答1
あと、
OfficeXP時代の
ドキュメントに
Long型の方がちょっと
効率がいいとあった
これはもう、
Long型が
いいのは確定的に明か
回答1
The Integer, Long, and
Byte Data Types
Traditionally, VBA programmers have used integers to hold small numbers, because they required less memory.
The Integer, Long, and
Byte Data Types
http://msdn.microsoft.com/en-us/library/aa164754%28office.10%29.aspx
伝統的にVBAプログラマは小さい数を保持してInteger型を使った なぜならば、(Long型にくらべて)メモリの要求が少なかったからだ。
In recent versions, however, VBA converts all integer values to type Long, even if they are declared as type Integer.
The Integer, Long, and
Byte Data Types
http://msdn.microsoft.com/en-us/library/aa164754%28office.10%29.aspx
しかしながら、最近のバージョンでは、VBAはすべての整数
の値をLong型に変換する。たとえそれがInteger型で宣言されて いたとしてもだ。
Therefore, there is no longer a performance advantage to using Integer variables
The Integer, Long, and
Byte Data Types
http://msdn.microsoft.com/en-us/library/aa164754%28office.10%29.aspx
したがってもはやInteger型の宣言にパフォーマンス上の有利は ない。
in fact, Long variables might be slightly faster because VBA does not have to convert them.
The Integer, Long, and
Byte Data Types
http://msdn.microsoft.com/en-us/library/aa164754%28office.10%29.aspx
実際、Long型の変数が多少早いかもしれない。
Integer vs Long
パフォーマンステスト
参考: 「VBA性能向上委員会」 Integer型とLong型はどちらを使うべき? http://www.banana-juice.com/VBA/Performance/Statement/IntLong.html
計測方法: ・-32,768~32,767までのループで和、差、積、商、余の計算する。 ・これを100回くりかえした時にかかった時間を出力する。 ・時間の出力にはTimerを使用する ・以上を1セットとして、これを10セット行う。 ・このアルゴリズムはInteger,Long共有である。 このプログラムは今回のサンプル用のワークブックにある。 mdlPerformanceTest. TestPerformance()を参照のこと。Integer vs Long
パフォーマンステスト
実験環境:
・実装メモリ(RAM) 4.00GB
・プロセッサ:
Intel® Core™ i5 CPU M450 @2.40GHz 2.40GHz ・OS:
Windows 7 Home Premium
64Bit オペレーティングシステム
・Microsoft Office Home and Business2010 バージョン 14.0.6129.5000 (32ビット)
Integer vs Long
(-) Integer(Sec) Long(Sec) (1) 0.7333984 0.7177734 (2) 0.734375 0.7324219 (3) 0.7490234 0.7333984 (4) 0.7490234 0.7333984 (5) 0.7636719 0.7177734 (6) 0.7490234 0.7333984 (7) 0.7324219 0.71875 (8) 0.7470703 0.734375 (9) 0.7480469 0.734375 (10)0.7480469 0.7333984 (平均) 0.74541015625 0.72890625Integer vs Long
パフォーマンステスト
実行結果:Long型
で
2.2%
程度の
速度向上
Long平均 ÷ Integer平均 × 100 ≒97.78%
まぁ、
Long型さん
まじぱねぇって
ことだ
変数名の制限ってなぁに?
Visual Basic Naming Rules
ってドキュメントに
書いてある
回答2