今天使用stringstream輸出double,當小數位數很多的時候,會丟掉一些位數,原來“stringstream對象默認精度為6,而許多程序員錯誤地把“精度”理解為小數的位數,這是不正確的,精度應指代全部位數。因而,數字 1234.56可安全地通過默認精度6來表示,但12345.67會被截斷為12345.6。這樣的話,如果你有一個非常大的數,如1234567.8, 它的結果會靜悄悄地轉換為科學記數法:1.23457e+06,可以重新設置精度
int prec=numeric_limits::digits10; // 18
ostringstream out;
out.precision(prec);//覆蓋默認精度
out<<value;
string str= out.str(); //從流中取出字符串 數值現在存儲在str中,等待格式化。
”以上內容引自http://blog.sina.com.cn/s/blog_4f183d960100lxh9.html