Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
数字を扱う変数
整数の型
少数点を含む型
目的
整数の型の種類
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.402823E38
1.401298E-45 →1.401298× 10-45
小数点以下がごく細かい
小数点を含む型の種類
固定少数点
Currency
浮動小数点
Single
Double
単精度浮動小数点数型 サイズ:4バイト 負の値の範囲 :-3.402823E38 ~ -1.401298E-45 正の値の範囲 :1.401298E-45 ~ 3.402823E38
3.402823E38 →3.402823× 1038
すごく大きい桁
小数点を含む型の種類
固定小数点
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
End Sub
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
End Sub
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
End Sub
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
End Sub
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
End Sub
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
End Sub
あ…ありのまま今起こったことを話すぜ
『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
End Sub
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
End Sub
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
End Sub
整数の型
少数点を含む型
きょう勉強したこと
整数の型
少数点を含む型
きょう勉強したこと
Interger型さんディスンなよ
バカなの?
アホなの?
ワゴンなの?
質問1
質問にかこつけて
神ゲーをディスるとは
汚いな
さすがInteger
汚い
回答1
俺はこれでInteger型 嫌いになったな
俺は中立の立場で 見てきたけど、
やはりLong型中心に いったほうがいい事が
判明した
回答1
あと、OfficeXP時代の
ドキュメントに
Long型の方がちょっと
効率がいいとあった
これはもう、Long型が
いいのは確定的に明か
回答1
The Integer, Long, and Byte Data Types
http://msdn.microsoft.com/en-us/library/aa164754%28office.10%29.aspx
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型の変数が多少早いかもしれない。
なぜならVBAがそれらを変換するような必要がないからだ。
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.72890625
Integer vs Long パフォーマンステスト
実行結果:
Long型で
2.2%程度の
速度向上
Long平均 ÷ Integer平均 × 100 ≒97.78%
まぁ、Long型さん
まじぱねぇって
ことだ
回答1
変数名の制限ってなぁに?
質問2
Visual Basic Naming Rules
ってドキュメントに
書いてある
回答2
http://msdn.microsoft.com/en-us/library/office/gg264773%28v=office.14%29.aspx
ルール1
最初は文字ではじめる
数字とか記号だめよ
回答2
ルール2
次の記号は使わない
スペースと
.!@&$#
回答2
ルール3
255文字を超えるな
回答2
ルール4
VBA中の
関数や命令と
同じ名前つけない
ほうがいい
回答2
ルール5
同じスコープレベル
で同じ名前使うな
回答2
あれ?
さっきのルール1で「文字」
っていったよね。
質問3
もしかして漢字や平仮名もry
質問3
そ、そんな変数名に
漢字や平仮名なんて
使うわけないから
わからないお
回答3
常識的に考えて
変数名にそんな物が
設定できるわけないお
回答3
数字を扱う変数