• ベストアンサー

STLのto_stringにlong double

こんばんは。 STLにto_string関数を見つけました。 変数の型を見るとlong doubleもサポートしているようなので値を入れてみたところfloat値を文字列に変換したものしか得られませんでした。 どのようにすればlong doubleを文字列として取得できるのでしょうか? 環境はVisualStudio2013です。

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

  • ベストアンサー
回答No.1

#include <iostream> #include <iomanip> #include <sstream> #include <string> using namespace std; int main() { long double val = 1.0 / 3.0; ostringstream stream; stream << setprecision(20) << val; string str = stream.str(); cout << str << endl; } /* 実行結果 (VC++12) 0.33333333333333331 */

TeijigoTeatime
質問者

お礼

早々のご返答ありがとうございます。 ostringstreamやsetprecisionは知りませんでした。 参考になります。 ありがとうございました。

その他の回答 (1)

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

まずは、マニュアルを読みましょう http://msdn.microsoft.com/ja-jp/library/ee404875.aspx to_stringには、書式設定の指定は無いようです。 > float値を文字列に変換したもの > long doubleを文字列として取得 floatやdoubleを文字列にするとき、決まった形式というのはありません。 ある程度標準のものはありますが。 long doubleも正しく文字列になっています。 ただ、spirntfの%Lf相当、ということで、floatやdoubleの%fと同じ桁だけしか文字列になっていないだけです。

TeijigoTeatime
質問者

お礼

すいません、マニュアル見ていませんでした。 ご指摘ありがとうございます。

関連するQ&A