ホーム ] 多倍長語 MegaLong ] 基数変換 ] 数値変換 ] 定数システム ] 演算時間予測システム ]

上へ
整数 → MegaLong
実数 → MegaLong
10進数 → MegaLong
文字列 → MegaLong
整数部分
小数部分
部分値
MegaLong → Long
MegaLong → Double
文字列変換

数値変換

MegaLong → Double

最終更新日:2007/04/26 新規

●概要

 MegaLong をDouble として返す。

●方法

 1億進数を通常の浮動小数点数に変換することになる。

  1. 指数が -324 〜308 までを対象とする。以外は、0.0 を返す。
  2. Double の精度桁は精々16桁なので、変換する配列数は、

    B は、変換元のMegaLong

    m = Math.Min(B.Mant.Length, 2)

    と、最大で 2 要素となる。

     
  3. その仮数部配列要素 ai に以下の演算を行い総和する(MegaLong の定義式を演算しているだけ)。

     Σ(ai・10-8・(i+1))・10Exp

    そのまま演算すると、指数がDouble範囲を超えてしまうことがあるので、10-8・(i+1) を先に a に対して演算する方式とする。以下のようになる。

    Dim DBase As Double = Base              '1億をDouble化
    Dim D As Double = 0.0
    For i = 0 To m - 1
       D = D + (B.Mant(i) / (DBase ^ (i + 1))) * 10 ^ Me.Exp
    Next
     
  4. 符号を設定する。