Next: , Previous: , Up: Floating-point Functions   [Index]


7.7 入出力関数

ここで述べる関数は,mpf値に対してstdioストリームとの入出力を行います。stream引数にNULLポインタを渡すと,stdinからの入力,stdoutへの出力をそれぞれ行います。

これらの関数を使うときには, gmp.hより前にstdio.hをインクルードしておき,必要となるプロトタイプ宣言が使えるようにしておきます。

Formatted OutputFormatted Inputも参照して下さい。

Function: size_t mpf_out_str (FILE *stream, int base, size_t n_digits, const mpf_t op)

streamopを文字列として出力します。返り値は書きこまれたバイト数で,エラーが発生した時にはゼロが返されます。

仮数部の先頭は‘0.’から始まり,基数baseは2以上36以下,または-36以上-2以下に設定できます。指数部は ‘e’で区切られて表示されますが,基数が10以上であれば区切り文字は@になります。指数部は常に10進表現になります。小数点は現在のロケールに従いますので,localeconvで設定可能です。

基数baseが2以上36以下の場合は数字と小文字だけで表現されます。-36以上-2以下の場合は,数字と大文字が使われます。37以上62の時は数字,大文字,小文字がこの順で使用されます。

仮数部は,opの精度桁以内のn_digits桁まで出力されます。n_digitsがゼロの時は最大桁数まで表示されます。

Function: size_t mpf_inp_str (mpf_t rop, FILE *stream, int base)

基数baseの値としてstreamから文字列として読み込み,浮動小数点数に変換してropに格納します。‘M@N’の形式か,10進表現であれば‘MeN’という形式であれば読み取ることができます。‘M’は仮数部,‘N’は指数部を意味します。仮数部は常に指定された基数表現となります。指数部は指定された基数表現,もしくは,baseが負数の時は10進表現となります。小数点は現在のロケールのものが使用され,localeconvで設定できます。

引数baseは2以上36,もしくは-36以上-2以下に設定できます。負数の場合は指数部は10進表現と指定したことになります。

対応するmpz関数とは異なり,baseがゼロの時は,基数を先頭の文字で指定することができません。従って,‘0.23’のような数字を8進数と解釈することはありません。

返り値は読み込んだバイト数になります。エラー発生時にはゼロが返されます。