数値変数

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png

Apache OpenOffice Basic は、数値処理用に 5 つの基本的な型をサポートしています。

  • 整数
  • 長整数型
  • 単精度変数
  • 倍精度型
  • 通貨変数

整数変数

整数変数には、-32768 から 32767 までの整数を格納することができます。1 つの整数変数が消費するメモリ量は、2 バイトです。整数変数の型宣言子は % です。整数変数には、非常に高速に計算できるというメリットがあり、ループカウンタ用の変数として適しています。整数変数に浮動小数点型の数値を代入すると、小数点以下を丸めた整数値が収められます。

整数変数の宣言は、次の形式で行います。

Dim Variable As Integer
Dim Variable%

長整数変数

長整数変数には –2147483648 から 2147483647 までの整数を格納することができます。1 つの長整数変数が消費するメモリ量は、4 バイトです。長整数変数の型宣言子は & です。長整数変数には、非常に高速に計算できるというメリットがあり、ループカウンタ用の変数として適しています。長整数変数に浮動小数点型の数値を代入すると、小数点以下を丸めた整数値が収められます。

長整数変数の宣言は、次の形式で行います。

Dim Variable as Long
Dim Variable&

単精度変数

単精度変数には 3.402823 × 1038 から 1.401298 × 10-45 までの正および負の浮動点小数を収めることができます。1 つの単精度変数が消費するメモリ量は、4 バイトです。単精度変数の型宣言子は ! です。

従来このような単精度変数は、より精度の高い倍精度変数に対して、必要な計算処理時間を短縮するために使われてきました。ただし近年は計算時間がさほど大きな要素にならなくなってきたため、単精度変数の必要性も低くなっています。

単精度変数の宣言は、次の形式で行います。

Dim Variable as Single
Dim Variable!

倍精度変数

倍精度変数には 1.79769313486232 × 10308 から 4.94065645841247 × 10-324 までの正および負の浮動点小数を収めることができます。倍精度変数が消費するメモリ量は、最大で 8 バイトです。倍精度変数は、高い精度を必要とする計算処理に適しています。倍精度変数の型宣言子は # です。

倍精度変数の宣言は、次の形式で行います。

Dim Variable As Double
Dim Variable#

通貨変数

通貨変数では、ほかの変数型と異なる方式で値が格納されます。この場合の数値は、小数部 4 桁の固定小数点方式として扱われます。整数部は最大 15 桁までが格納できます。通貨変数には -922337203685477.5808 から +922337203685477.5807 までの数値を収めることができ、1 つの通貨変数が消費するメモリ量は、8 バイトです。通貨変数の型宣言子は @ です。

主として通貨変数は、金銭計算などを行う際に、浮動小数点に起因する丸め誤差を避ける場合に使用されます。

通貨変数の宣言は、次の形式で行います。

Dim Variable As Currency
Dim Variable@

浮動小数点数値

単精度、倍精度、および通貨の各型は、まとめて浮動小数点、または浮動小数点数型と呼ばれることがよくあります。浮動小数点数は、さまざまな長さの小数部分を持つ数値を格納でき、そのためにこのような名前が付いています。小数点が数値の中を「浮動」できるように見えます。

float 型の変数を宣言できます。変数の実際の型 (single、long、currency) は、値が変数に代入される時点で決まります。

Dim A As Float
A = 1210.126

数値の明示的指定

数値の表示方式には、小数点表示や指数表示などの各種の方式があり、その他に 10 進数以外の表示を行うことも可能です。Apache OpenOffice Basic で扱う数値には、次の規則が適用されます。

整数

数値としての扱い方が最も簡単なのが整数です。なおソースコード内にこれら数値を記述する際には、千単位の桁区切りを示すコンマを付ける必要はありません。

Dim A As Integer
Dim B As Float
 
A = 1210
B = 2438

数値の前にはプラス記号 (+) またはマイナス記号 (-) を指定できます (これらの記号と数値の間にスペース記号を付けても付けなくても同じ)。

Dim A As Integer
Dim B As Float
 
A = + 121
B = - 243

小数

小数を入力するときは、ピリオド (.) を小数点として使用します。これは、ほかの記号を小数点として使用している地域においても、ソースコードをそのまま使用するための規則です。

Dim A As Integer
Dim B As Integer
Dim C As Float
 
A = 1223.53      ' is rounded
B = - 23446.46   ' is rounded
C = + 3532.76323

小数値の前にはプラス記号 (+) またはマイナス記号 (-) を指定できます (この場合も記号と数値の間にスペース記号を付けても付けなくても同じ)。

整数変数に10 進数が代入される場合、Apache OpenOffice Basic は数字を切り上げまたは切り捨てます。

指数表示

Apache OpenOffice Basic では、数値を指数 (累乗、べき乗) 形式で指定することができ、たとえば 1.5 x 10-10 (0.00000000015) という値は 1.5e-10 と表記できます。この場合の「e」は大文字でも小文字でもよく、先頭にプラス記号 (+) を付けても付けなくても同じです。

ここでは、正しい指数表記と正しくない指数表記の例をいくつか見てみます。

Dim A As Double
 
A = 1.43E2    ' Correct
A = + 1.43E2  ' Correct (space between plus and basic number)
A = - 1.43E2  ' Correct (space between minus and basic number)
A = 1.43E-2   ' Correct (negative exponent)
A = 1.43E -2  ' Incorrect (spaces not permitted within the number)
A = 1,43E-2   ' Incorrect (commas not permitted as decimal points)
A = 1.43E2.2  ' Incorrect (exponent must be a whole number)

上記の無効な例のうち 1 番目と 3 番目のものでは、エラーメッセージは表示されませんが、結果として間違った値が返されるので注意が必要です。配列は次のようにして宣言します。

A = 1.43E -2

これは 1.43 マイナス 2 として解釈され、値 -0.57 に対応します。しかし、意図した値は 1.43 x 10-2 (0.0143 に対応) です。次のような値があります。

A = 1.43E2.2

Apache OpenOffice Basic は指数部の数値の小数点以下を無視するので、この数式は次のものとして処理されます。

A = 1.43E2

16 進数

16 進数による数値表記では、2 桁の数値が 1 バイトの値と正確に対応します。この表記法は、コンピュータ内部で直接処理されるデータ値を扱う際に有用です。数値の 16 進数表記では、0 から 9 までの数字と A から F までのアルファベットの組合せで個々の値を表現します。この場合の A は 10 進数の 10 に該当し、F は 10 進数の 15 に該当します。Apache OpenOffice Basic では、&H を数値の先頭に付けることで、16 進数であることを指定します。

Dim A As Long
A = &HFF ' Hexadecimal value FF, corresponds to the decimal value 255
A = &H10 ' Hexadecimal value 10, corresponds to the decimal value 16

8 進数

Apache OpenOffice Basic では 8 進数も使用できます。使用できる数値は 0 ~ 7 です。整数の前に &O を付けて表す必要があります。

Dim A As Long
A = &O77 ' Octal value 77, corresponds to the decimal value 63
A = &O10 ' Octal value 10, corresponds to the decimal value 8


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools