質問: 倍精度小数をテキスト形式で保存する場合には、10進数の有効桁数N桁表示で表すのが妥当だと考えています。 (例: `1.23456e+10`, などこの場合有効数字6桁) 無限に有効数字の桁数をとれるのであるならば、それは倍精度小数に再変換した際にも、もともとの数字に戻ってくることが保証できるような気がします。しかし、リソースは有限なので、必要以上の桁数を保存するのは無駄です。 ### 質問 * 倍精度浮動小数を10進数の有効数値表示で保存する場合、元々の数字に必ず戻ってこれるような有効桁数のうち、最小のものはいくつですか? * 2進数有効桁数表示である倍精度浮動小数と、10進数有効桁数表示の、形式の違いによって丸める必要が発生した場合、それは一番近い表現可能な値へと丸めることとします。
回答: > > 倍精度小数をテキスト形式で保存する場合には、10進数の有効桁数N桁表示で表すのが妥当だと考えています。 > > > 数値をテキスト形式で保存する目的がわからないので妥当性の判断ができません。 そのテキストデータをどのように使用するのでしょうか? もし同じ(CPUアーキテクチャの)マシンでプログラムが読み込んで その値を演算等に使用するだけであればテキストでなく バイナリ形式で保存すれば完全に値が保持されます。 テキスト形式で保存する必要があるでしょうか? > > 倍精度浮動小数を10進数の有効数値表示で保存する場合、元々の数字に必ず戻ってこれるような有効桁数のうち、最小のものはいくつですか? > > > そのマシンのCPUがどの規格に従うかで変わってきます。 現在の多くのパソコンはIEEE 754 形式です。 そうだと仮定すると17桁が必要最低限かと思います。 最下位桁の扱いがテキスト化する時とテキストを読み込む時で同じであることが前提です。