上へ 整数 → MegaLong 実数 → MegaLong 10進数 → MegaLong 文字列 → MegaLong 整数部分 小数部分 部分値 MegaLong → Long MegaLong → Double 文字列変換
| |
数値変換 |
MegaLong → Double |
最終更新日:2006/11/29 新規 |
●概要
MegaLong をDouble として返す。
●方法
1億進数を通常の浮動小数点数に変換することになる。
- 指数が -324 〜308 までを対象とする。以外は、0.0 を返す。
- Double の精度桁は精々16桁なので、変換する配列数は、
B は、変換元のMegaLong
m = Math.Min(B.Mant.Length, 2)
と、最大で 2 要素となる。
- その仮数部配列要素 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
- 符号を設定する。
|