countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2023 年 10 月 26 日
X68000 LIBRARY > 資料室 > FE ファンクションコールリファレンス > S > __STOD

__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 が文字列の直後ではなく最後の文字を指している