LOTUSSCRIPT 言語
可能であれば、代入する値のデータ型が代入先の変数のデータ型に変換されます。以下に例を示します。aDouble# = anInteger% の場合、integer 型の変数 anInteger% の値は、自動的に変換された後、倍精度浮動小数点変数 aDouble# に代入されます。
算術演算子の左辺または右辺のオペランドとしてデータ型が異なる 2 つの数値が使用される場合、可能であれば、演算が評価される前に一方のオペランドのデータ型をもう一方のオペランドのデータ型に変換します。以下に例を示します。aVariantV = anInteger% + aDouble# は、両方とも Double 型の値として扱って anInteger% と aDouble# の値を加算します。結果は Double 型の Variant 変数に代入されます。
データ型が異なる 2 つの数値を比較する場合、比較のために 2 つの数値は同じデータ型として扱われます。たとえば、変数 anInt% と変数 myLong& の値は、両方とも Long 型として扱われます。
If anInt% > myLong& Then Print "anInt% is greater than myLong&." End If
たとえば、ステートメント aVariantV = aVariantV + 5 では、LotusScript の Integer 型の最大値は 32767 なので、Integer 型ではなく Long 型の値が変数 aVariantV に代入されます。
aVariantV = 32767 Print TypeName(aVariantV) ' Output:INTEGER aVariantV = aVariantV + 5 Print TypeName(aVariantV) ' Output:LONG 型
次のいずれか 1 つが真の場合に、加算が実行されます。
メモ 予期しない結果を避けるため、できる限り明示的な変換を使用することをお勧めします。
例 1
' This example illustrates the automatic conversion ' of decimal numbers to integers that happens when you perform ' integer division and when you assign a decimal number value ' to an integer variable.
Dim anInt As Integer Dim aDouble As Double ' Do floating-point division. anInt% = 12/7 Print anInt% ' Output:2 aDouble# = 12/7 Print aDouble# ' Output:1.71428571428571 ' Do integer division. anInt% = 12\7 Print anInt% ' Output:1 aDouble# = 12\7 Print aDouble# ' Output:1 ' Do floating-point division. anInt% = 12.5/2 Print anInt% ' Output:6 aDouble# = 12.5/2 Print aDouble# ' Output:6.25 ' Do integer division. anInt% = 12.5\2 Print anInt% ' Output:6 aDouble# = 12.5\2 Print aDouble# ' Output: 6
例 2
次の例では、値 1.6 が X に代入されます。X は Integer 型の変数なので、1.6 は代入が行われる前に整数に変換されます。浮動小数点数値 (単精度および倍精度の値) から整数値 (Integer および Long 値) への変換では、値は最も近い整数に丸められます。この場合は 2 になります。
1.5 が Y に代入される場合、LotusScript によって最も近い偶数の整数 2 に丸められます。浮動小数点数値が 2 つの整数値のちょうど半分である場合、常に最も近い偶数の整数値に丸められます。したがって、値 2.5 は Z に代入されるときに 2 に丸められます。値 3.5 は 4 に、値 -3.5 は -4 に丸められます。値 0.5 と -0.5 はゼロに丸められます。
Dim X As Integer Dim Y As Integer Dim Z As Integer X% = 1.6 Print X% ' Output:2 Y% = 1.5 Print Y% ' Output:2 Z% = 2.5 Print Z% ' Output: 2
例 3
次の例では、Variant 型の変数でのデータ型変換が、数値に対応してどのように処理されるかを示しています。
Dim sumV As Variant Dim sInt As Integer sInt% = 42 sumV = sInt% Print TypeName(sumV) ' Output:INTEGER ' Assign the largest integer value to sInt%. sInt% = 32767 sumV = sInt% + 1 ' LotusScript converts sumV to a Long to prevent ' an overflow. Print TypeName(SumV) ' Output:LONG 型
例 4
次の例では、Variant 型の変数が + 演算子を伴う演算のオペランドである場合に、LotusScript が「数値から文字列」および「文字列から数値」の変換を行う様子を示しています。+ 演算子は、加算にも文字連結にも使用できます。
Dim aVariantV As Variant aVariantV = 1040 Print TypeName(aVariantV) ' Output:INTEGER 型
Print aVariantV + "A" ' Output:1040A ' because "A" is a string and 1040 can be interpreted as a string. aVariantV = "43" Print TypeName(aVariantV) ' Output:STRING Print aVariantV + 5 ' Output:48 ' because 48 is a number and 5 can be interpreted as a number.
関連項目