上へ 整数 → MegaLong 実数 → MegaLong 10進数 → MegaLong 文字列 → MegaLong 整数部分 小数部分 部分値 MegaLong → Long MegaLong → Double 文字列変換
| |
数値変換 |
実数 → MegaLong |
最終更新日:2006/11/29
訂正 |
●概要
実数とは、Single、Double を言う。
●方法
- 0 はZero とする。
- 符号を決定。
- 10進としての指数を以下のようにして10の対数を求めて決定する。
Dim ex As Integer = GetDecPower(V) + 1
'10進指数を求める関数(下記)
- 仮数を、10進で、0.99999・・・999 の形式にする。vv = V * 10-ex
- vv を正規化された整数 VL にする。
Single VL = CLng(vv * Base)
(8桁の整数)
Double VL = CLng(vv * Base * Base)
(16桁の整数)
- 有効桁数にする。
VL = (VL \ 10) * 10 末尾を切捨てる
- 配列にする。
Single Mant(0) = VL
Double
VL >= Base のとき
Mant(0) = VL \ Base
Mant(1) = VL Mod Base
else
Mant(0) = VL
- 指数部は ex とする
10進の指数を求める関数、Log10 の値を補正している。Double では、0.9999999999999999 = 1
になってしまう弊害を補正している。
Friend Function GetDecPower(ByVal V As
Double) As Integer
Dim p As Integer = Int(Math.Log10(V))
Dim F As Double = 10 ^ p
If V >= F Then
Return p
ElseIf V < F Then '10n - ε
の場合の補正
Return p - 1
End If
End Function
|