XMLRPC issues

浮動少数型について

XMLRPC の浮動少数型である double では、仕様をざっくり要約すると「無限大の表現はない。符号と数字とピリオドのみで空白は含まれない。値の範囲は実装依存。」ということになっている。

Python の xmlrpclib では、XMLRPC の浮動少数型である double を repr() で生成するので、精度は 17 になる(浮動少数)。また repr() は 2.23e-05 といった XMLRPC 仕様に合致しない文字列表現を出力することがあるが、実用上は問題ない。余談になるけれども str() でも浮動少数を文字列に変換した場合の精度は 12 で、また%フォーマッタを使うとそれ相応の精度に切り詰められる。decimal を使うとさらに高精度が扱えるが、システム間結合を目的としている XMLRPC では通信先での受け入れができなければ意味がないので、これが登場することは稀だろう。

PHP の xmlrpc extension では XMLRPC の浮動少数は zval から取得(Z_DVAL_P を使用)し、それを ap_php_snprintf の %.*G でフォーマットするので php.ini の precision に依存する。つまりデフォルトでは精度は 14 になる。こちらも NAN, INF, -INF や 2.23E-5 といった文字列を出力することがあるが、実用上は問題ないだろう。


    Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes

© 2006-2008 Internet Revolution