• ベストアンサー

double型を文字列で。

doubleが文字列表現したいのですが、printfで"%f"をしていしても桁が足りません。 検索で調べても桁を指定しているものが多く、汎用的ではないように見えます。 変数にセットされたdouble値をそのまま文字列で表現する方法はないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • racene
  • ベストアンサー率70% (21/30)
回答No.2

doubleも内部では2進数なので、10進数に変換して表示するときは近似値にせざるをえません。 そのため、質問者様の意図した意味で「セットされたdouble値をそのまま文字列で表現する」ことは不可能です。 どうしてもそのようなことをしたい場合は有理数ライブラリを使うとよいでしょう。 C++であればboostライブラリ等に入っていたはずです。(C言語のライブラリは申し訳有りませんが知りません)

TeijigoTeatime
質問者

お礼

デバッグウィンドウに表示されているような感じでよかったので近似値になるとは分かっていたのですが、説明が足りませんでした。申し訳ありません。 有理数ライブラリというのは初めて聞きました。boostも含めて調べてみたいと思います。 ありがとうございました。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

#1 に同意. 何をしたいのかさっぱりわかりません. せめて例でもあればまだ想像できるんだけど. あと, 「doubleも内部では2進数」とは限らない>#2 し, 「浮動小数点数は2^-1022~2^1023の範囲で値を格納できます」とも言い切れなかったりします>#3.

TeijigoTeatime
質問者

補足

説明が足りませんでした。 失礼しました。 他の方の意見を参考に勉強します。

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.3

あなたの言う汎用的な、値をそのまま出力する出力関数はあなたがC言語で自分でも作成することができますよ。やってみれば色々と勉強になると思います。 組み込み系のプログラマをやっているとprintfのような関数がない場合があって自分で作成することがありますから。 でも浮動小数点数は2^-1022~2^1023の範囲で値を格納できますので、あなたのいうような汎用的な出力関数は整数部は300桁超、小数部は1000桁超になる可能性があります。 ですからあまり実用的ではないので自作する場合も大体printfに合わせた感じで作成することになります。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

すみません。言ってることがわかりません。 「double値をそのまま文字列」と「%fで精度を指定」するのと、なにが違うのでしょう? 「汎用的ではない」とは何のことですか? あと、printfのマニュアルをよく読んでください。f以外にもdoubleに対応した書式設定があります。

TeijigoTeatime
質問者

お礼

早速のレスありがとうございます。 説明が下手で申し訳ありません。 ドキュメントをよく読んでみます。

関連するQ&A