| 
     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 が、生成される。 
 
 |