2012-09-10 26 views

回答

5

std::stringstream::precision()返回streamsize,不流本身,如果要排序<<運營商所需要的參考。這應該工作:

double a = 34.34566535; 
std::stringstream precisionValue; 
precisionValue.precision(6); 
precisionValue << a << std::endl; 
9

它不會編譯,因爲ios_base::precision()回報streamsize(這是一個整體型)。

您可以使用stream manipulators

precisionValue << std::setprecision(6) << a << std::endl; 

你需要包括<iomanip>

+0

作品。大!謝謝 :) – programmingNoob

2

您可以使用std::setprecision從頭部<iomanip>

#include <string> 
#include <sstream> 
#include <iomanip> 
#include <iostream> 

int main() 
{ 
    double a = 34.34566535; 
    std::stringstream precisionValue; 
    precisionValue << std::setprecision(6); 
    precisionValue << a << std::endl; 
    std::cout << precisionValue.str(); 
} 
3

precision成員函數返回電流精度,不給stringstream的一個參考,所以你可以爲你的片段做了不連鎖的電話。

precisionValue.precision(6);  
precisionValue << a; 
std::cout << precisionValue.str() << std::endl; 

或者使用setprecision IO機械手鍊中的呼叫:

precisionValue << setprecision(6) << a; 
std::cout << precisionValue.str() << std::endl; 
相關問題