ホーム ] PC技術/システム技術 ] VB.NETプログラミング ] なるほどナレッジ ] インフォメーション ]

上へ
数値仕様
New
演算メソッド
入出力メソッド
プロパティ

UltraLong構造体

入出力メソッド

最終更新日:2006/04/03 仕様変更

●概要

 数値の内容を外部に表現したり、内部に保存したりする。

●関数仕様1(テキスト群)

 文字列(テキスト)にて入出力を行う関数で、

・Format (Enum NumFormat)

Exponent                   指数表示
FixedPoint                 固定小数点表示

にて、その形式を指定できる。

ToNumString(ByVal Format As NumFormat, Optional ByVal FractionLength As Integer = 0) As String

 Format で指定された形式で、数値を文字列にする。 FractionLength は、小数点以下の表示桁数を制限するときに指定する。 デフォールトは、全桁。実際に制限があった場合は、数値の末尾に、・・ が付加され、それ以下が省略されたことを表す。小数部がない場合や、指定された桁未満の場合は、制限されない。

<用例>

123456789.123456789 / 987654.321 の演算結果例(精度が500桁)

・ToNumString(Expornent):指数表示

1.2499999898593749887517578126406030273419924621582250942230221863222122226709723472166128
456597923394292525957571343425530358207180870522410239118469872011019126599862260917501721
738531228478268359644021645504449729431194378382110070270223624121622204698479722441269003
469484137456631448281792106896477598663794030016702574624791217817190109777285123627783935
954652700800566841239992914484500088568943748892888203138838897460764513781740443577728244
4552783969443090200381961372495225482843809681E+2

・ToNumString(Fixedpoint):固定小数点

124.99999898593749887517578126406030273419924621582250942230221863222122226709723472166128
456597923394292525957571343425530358207180870522410239118469872011019126599862260917501721
738531228478268359644021645504449729431194378382110070270223624121622204698479722441269003
469484137456631448281792106896477598663794030016702574624791217817190109777285123627783935
954652700800566841239992914484500088568943748892888203138838897460764513781740443577728244
4552783969443090200381961372495225482843809681

・ToNumString(Expornent, 15):指数表示

1.249999989859374・・E+2

・ToNumString(Fixedpoint, 15):固定小数点

124.999998985937498・・

StoreNumString(ByVal FP As String, ByVal Format As NumFormat, Optional ByVal Comment As String ="")

 ToNumString された文字列を、テキストファイルとして書き出す。FP に、ファイルフルパスを指定する。ベタ書きだと扱いにくいので、80文字を一行となるようにしている。Comment が、空白でなければ、最初の行が、"/ "+Comment になる。

<用例>

Dim A As New UltraLong("3.14159")
A.StoreNumString("C:\MyUltra\MyPI.txt", Fixedpoint)

LoadNumString(ByVal FP As String)

 StoreNumString でファイルされたような形式のテキストファイルをUltraLong値とする。ファイルが不正であれば、値 0 となる。形式が文字列数値であれば、読み込むことができる。行頭が、"/"や"[" の場合は、読み飛ばす。

<用例>

Dim A As New UltraLong(0)
A.LoadNumString("C:MyUltra\MyPI.txt")
 

関数仕様2(バイナリ群)

 UltraLong値をバイナリ形式でファイルに入出力する。テキストは簡便ではあるが、その性質上、処理時間が掛かる。処理時間が気になる場合は、このバイナリ関数を利用する。ファイル形式は以下の通り。h は、16進数。2文字が1バイトとなる。

 ちなみに、100万桁の数値では、およそ、500kB のバイナリファイルとなる。テキスト形式では、1MB。

hEEEE                         開始マーカ
aaaaaaaa                     指数部
bbbbbbbb                     符号
cccccccc                     実桁数
dddddddd                     仮数部配列サイズ
gggg gggg ・・・・ ggggg      仮数部配列(可変長)
hFFFF                         終了マーカ
 

StoreValue(ByVal FP As String)

 自分の値を、上記の形式で、ファイルに書き出す。FP に、ファイルフルパスを指定する。ファイル名の拡張子は任意。

<用例>

 Aの値 1.23456789123456789 を、バイナリファイルとして保存

A.StoreValue("C:\MyUltra\MyValue.ulv")

このファイルをHexダンプすると、

01  EE EE 00 00 00 00 00 00 00 00 12 00 00 00 03 00
02  00 00 4E 61 BC 00 07 21 70 05 40 08 4E 05 FF FF

のようになる。EEEE は、開始マーク(2バイト、Short)、その後、4バイト単位(Integer)で、指数部、符号、実桁数、仮数部配列サイズ、仮数部配列(可変サイズ) と並ぶ。FFFF は、終了マーク(2バイト)。数値は、スモールエンディアンで並ぶ。12345678 = h00BC614E であるが、Hexダンプの緑色の数値がそれである。

LoadValue(ByVal FP As String, Optional ByVal Limit As Integer = 0)

 FPのファイルパスに保存されたバイナリファイルを読みとり、自分の値にする。Limit にて、精度(桁数)をどれだけ読むのかを以下のように決める。

<0      別途指定された精度
0        ファイルにある精度(デフォールト)
>1      Limit分

●関数仕様3(型変換)

 UltraLong値を標準のデータ型に変換する。

ToInteger(Optional Mode As ConvMode = Strict) As Integer

 値がIntegerの範囲であれば、Integerが返る。それ以外は、0 となる。

  Strict:(デフォールト)完全な整数のみが対象
  Truncate:小数部は切り捨てられる(四捨五入ではない)

ToLong(Optional Mode As ConvMode = Strict) As Long

 値がLongの範囲であれば、Longが返る。それ以外は、0 となる。

 Strict:(デフォールト)完全な整数のみが対象
  Truncate:小数部は切り捨てられる(四捨五入ではない)

ToDouble As Double

 値がDoubleの範囲であれば、Doubleが返る。それ以外は 0 となる。概ね、有効桁は15桁となり、それ以降は四捨五入される。