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

__USING

FE ファンクションコール名

__USING

FE ファンクションコール番号

$FE21

機能

64bit 浮動小数点数をアトリビュートを指定して文字列に変換する

入力

d0d1.d:64bit 浮動小数点数

d2.l: 整数部の桁数

d3.l: 小数部の桁数

d4.l: アトリビュート

bit0 左側を '*' で埋める

bit1 先頭に '¥' を付ける

bit2 整数部を 3 桁毎に ',' で区切る

bit3 指数形式

bit4 先頭に符号('+' または '-')を付ける

bit5 末尾に符号('+' または '-')を付ける

bit6 末尾に符号(' ' または '-')を付ける

a0.l: 文字列バッファの先頭

出力

a0 は変化しない

解説

メモ

bit1 の '¥' と bit4 の '+' を両方指定したときは '¥' が右側。先頭に "+¥" を付ける

bit1 の '¥' と bit2 の ',' と bit4 の '+' は整数部の桁数が足りないとき数字を右にずらして押し込まれる

bit3 で指数形式を指示しなければ指数部が極端に大きくても極端に小さくても指数形式にならない

bit3 で指数形式を指定したとき bit1 の '¥' と bit2 の ',' は無効

bit4 と bit5 と bit6 は bit4>bit5>bit6 の順位で 1 つだけ有効

有効数字は 14 桁で 15 桁目以降はすべて 0

FLOAT2.X は整数部の 0 でない最初の数字から 256 文字目までで打ち切られてしまう

整数部の桁数に余裕があれば左側の空白は出力されるので文字列の全体が常に 256 バイトに収まるわけではない

using 1234.5 5 0 0    " 1235."
using 1234.5 5 1 0    " 1234.5"
using 1234.5 5 2 0    " 1234.50"
using 1234.5 6 2 1    "**1234.50"
using 1234.5 6 2 2    " ¥1234.50"
using 1234.5 6 2 3    "*¥1234.50"
using 1234.5 6 2 4    " 1,234.50"
using 1234.5 4 2 4    "1,234.50"
using 1234.5 4 2 5    "1,234.50"
using 1234.5 4 2 6    "¥1,234.50"
using 1234.5 4 2 7    "¥1,234.50"
using 1234.5 4 2 16   "+1234.50"
using 1234.5 4 2 22   "+¥1,234.50"
using 1234.5 4 2 32   "1234.50+"
using 1234.5 4 2 48   "+1234.50"
using 1234.5 4 2 64   "1234.50 "
using 1234.5 4 2 80   "+1234.50"
using 1234.5 4 2 96   "1234.50+"
using 12345678901234567890 10 1 0      "12345678901235000000.0"
using 12345678901234567890e+10 10 1 0  "123456789012350000000000000000.0"
using 0.3333 0 0 0    "."
using 0.6666 0 0 0    "1."
using 0.6666 0 3 0    ".667"
using 0.6666 3 0 0    "  1."
using 0.3333 0 0 2    "¥."
using 0.3333 0 0 16   "+."
using 0.3333 0 0 18   "+¥."
using 1e-10 3 3 0     "  0.000"

指数形式の出力は不可解で本来の動作ではないように思えるが、X-BASIC の print using 命令が使っているので FLOAT2.X に合わせておいた方がよさそう

print using "###.##";1.23         "  1.23"         整数部の桁数は3
print using "+##.##";1.23         " +1.23"         整数部の桁数は3←
print using "###.##^^^^^";1.23    " 12.30E-001"    整数部の桁数は3
print using "+##.##^^^^^";1.23    "+12.30E-001"    整数部の桁数は2←

FLOAT2.X では #NAN と #INF は 4 桁の整数のように出力される。末尾に小数点が付くが小数部には何も出力されない

using -#INF 7 3 23     "*-¥#,INF."

FLOAT2.X で #NAN と #INF を指数形式にするとさらに不可解。これはバグと言ってよいと思う

using #INF 10 10 8      " #INFE-005"

ここでは #NAN と #INF は整数部と小数点と小数部と指数部の全体を使って右寄せにする