__STOD
FE ファンクションコール名
__STOD
FE ファンクションコール番号
$FE22
機能
文字列を 64bit 浮動小数点数に変換する
入力
a0.l: 文字列の先頭
出力
d0d1.d:64bit 浮動小数点数
d2.l:65535=64bit 浮動小数点数をオーバーフローなしで int に変換できる ,0= それ以外
d3.l:d2.l==65535 のとき 64bit 浮動小数点数を int に変換した値
a0.l: 変換された文字列の直後('\0' とは限らない)
フラグ
cs: エラーあり ,cs+mi: 文法エラー ,cs+vs: オーバーフロー
解説
先頭の '\t' と ' ' を読み飛ばす
"#INF" は無限大、"#NAN" は非数とみなす
バグ
FLOAT2.X 2.02/2.03 は誤差が大きい
"1.7976931348623E+308"=0x7fefffffffffffb0 が 0x7fefffffffffffb3 になる
"1.5707963267949"=0x3ff921fb54442d28 が 0x3ff921fb54442d26 になる
"4.9406564584125E-324"(非正規化数の最小値よりもわずかに大きい)がエラーになる
FLOAT2.X 2.02/2.03 は "-0" が +0 になる
FLOAT4.X 1.02 は "-0" が +0 になる(実機で確認済み)
FLOAT2.X 2.02/2.03 は "-#INF" が +Inf になる
print val("-#INF")で再現できる
'-' を符号として解釈しておきながら結果の無限大に符号を付けるのを忘れている
FLOAT2.X 2.02/2.03 は ".#INF" が +Inf になる
print val(".#INF")で再現できる
FLOAT4.X 1.02 は "#NAN","#INF","-#INF" を読み取ったとき a0 が文字列の直後ではなく最後の文字を指している