| 
上へ整数 → MegaLong
 実数 → MegaLong
 10進数 → MegaLong
 文字列 → MegaLong
 整数部分
 小数部分
 部分値
 MegaLong → Long
 MegaLong → Double
 文字列変換
 |  | 
  
    | 数値変換 |  
    | MegaLong → Long |  
    | 最終更新日:2007/02/20 新規 |  ●概要  MegaLong の整数部分をLong として返す。 ●方法  1億進数を通常の2進数値に変換することになる。 
  指数が 1〜19 までを対象とする。以外は、0 を返す。MegaLongの絶対値が 263 未満であれば、Long化できるので、変換する配列数は、
 B は、変換元のMegaLong
 
 If B.Exp <= B.Length Then
 m = (B.Exp - 1) \ 8                         
  '整数部.小数部なので、整数部をカバー
 Else
 m = (B.Length - 1) \ 8                     
  '元々整数
 End If
 m = Math.Min(B.Mant.Length, m + 1)   '変換する配列数
 
その仮数部配列要素 ai に以下の演算を行い総和する(MegaLong の定義式を演算しているだけ)。
 Σ(ai・10-8・(i+1))・10Exp
 
 指数演算は、以下の関数で整数演算にて行う。DepPow は、10n のテーブル。
 
 Friend Function DigitAlignment(ByVal V As Long, ByVal E As Integer) As Long
 Select Case E
 Case 0
 Return V
 Case Is < 0
 Return V \ (DecPow(-E))    
  '冪数が負のときは、整数除算にする
 Case Else
 Return V * DecPow(E)
 End Select
 End Function
 
 従って、実際の演算部分は、
 
 DigitAlignment(ai, -8・(i + 1) + Exp)
 
 となる。
 
符号を設定する。 例えば、0.123456789876543E12 であれば、i = 0 to 1 で、
 
12345678・10-8+12 + 98765430・10-16+12= 12345678・104 + 98765430 \ 104
 = 123456780000 + 9876
 = 123456789876
 となる。 |