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

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

UltraLong構造体

New

最終更新日:2006/06/10 追加

●概要

 必ず、Newでインスタンスを生成する。定義のみでは、Empty状態のままで、演算できない。Newの時に、具体的な数値を代入する。数値は、Byte、Short、Integer、Long、Decimal、Single、Double、String、StringBuilder、UltraLong が可能。これ以外の型の場合は、値 0 となる。

●関数仕様

 以下のオーバーロードがある。

New(ByVal Value As Object) / New(ByRef Value As UltraLong)

 単純に値を指定して生成する。Value として以下の各データ型が扱える。

<許されたObject>

  • Byte、Short、Integer、Long

    値がそのまま採用される。
     
  • Decimal

    小数の場合も含めて、値がそのまま採用される。
     
  • Single

    仮数部として、頭から10進7桁までが採用される。8桁目は四捨五入される。符号、指数部はそのまま。
     
  • Double

    仮数部として、頭から10進15桁までが採用される。符号、指数部はそのまま。
     
  • String、StringBuilder

    文字列で表された数値の場合はその値が採用される。数値の範囲(値、桁数)は、UltraLongの範囲。数値でない場合は、値 0 となる。
     
  • UltraLong

    既に生成されたUltraLong がそのままコピーされる。
     
  • 上記以外の型の場合は、値0 となる。

<用例>

Dim K As Long = 123456789
Dim A As New UltraLong(K)
Dim B As New UltraLong(123456789)
Dim C As New UltraLong("99.9811")
Dim D As New UltraLong(99.9811E+5)
Dim X As New UltraLong(C)
Dim Y As New UltraLong(Div(Subt(X,1),Add(X,1)))   当然、UltraMathの演算結果でも良い 

New(ByVal M As Long, ByVal E As Integer)

 M を仮数部、E を指数部にしたUltraLongが生成される。内部では、

 N = New UltraLong(M)   正規化される
  N.Exp = N.Exp + E            指数部が加算される

と処理される。

<用例>

 New(12345, 300) とすれば、1.2345E+304 が生成される。仮数部の指数も加算されるので注意方。

New(ByVal M As Double, ByVal E As Integer)

 M を仮数部、E を指数部にしたUltraLongが生成される。内部では、

 N = New UltraLong(M)   頭から15桁までが採用され、正規化される
  N.Exp = N.Exp + E            指数部が加算される

と処理される。

<用例>

 New(12.345678, 300) とすれば、1.2345678E+301 が生成される。仮数部の指数も加算されるので注意方。

New(ByVal Sign As Integer, ByVal E As Integer, ByVal ValueArray() As Integer)

 Sign を符号、E を指数部、ValueArray() を、そのまま仮数部の配列にして、新しいUltraLongが生成される。但し、ValueArray()は、正規化され、指数部は調整される。また、ValueArray()の各要素は、絶対値の基数剰余に強制変換される。つまり、負数や、基数を超える値は、正の基数未満になる。 文字列に依らないので、多倍長数値を高速に生成できる。

<用例>

 VA() As Integer = {12345678, 91234567, 89120000}
 New(1, 11,VA)    1.2345678912345678912なる仮数部とされる

  -123456789123.45678912 が、生成される。