double型16進数文字列の10進数への変換
zeno 2013/4/9(Tue) 11:23:45|NO.53505
"40F86A0000000000"のような
符号部 1bit
指数部 11bit
仮数部 52bit
になっているdouble型の文字列を、有効数字8桁程度の10進数に変換したいと思っています。
素直に定義式に当てはめて計算すると
2の52乗等が出てきて、hspで扱える範囲外になってしまい、計算することができません。
何か良い方策はありませんでしょうか?
よろしくお願い致します。
skyblue 2013/4/9(Tue) 18:23:59|NO.53508
一桁ずつ重みなども考慮して自力計算する。
表示や保存は全て文字列で、計算のときだけint型にする。
そうすれば2048bitであろうが可能。ただし、そこまでくると遅いが。
test 2013/4/9(Tue) 19:57:42|NO.53512
浮動小数点数は単なるバイナリデータに過ぎません。バイナリ表現がわかっているなら、そのバイナリ表現をもとに変数を作ればその数値が得られます。doublestr="40F86A0000000000"
//double型変数を作る
a=0.0
//1バイトずつpokeで変数に書き込む
repeat 8
//16進表現を2桁切り取って数値に直す
byte=int("$"+strmid(doublestr,(7-cnt)*2,2))
//書き込む
poke a,cnt,byte
loop
//結果を表示
mes a
zeno 2013/4/10(Wed) 19:19:33|NO.53520
>skyblueさん
>testさん
返信ありがとうございます
バイナリデータの扱いを理解していれば、こんなにすっきり書けるものなんですね
勉強になります