Tôi có một loạt các số nguyên mà tôi đưa vào stringstream
s. Bây giờ tôi muốn thay đổi stringstream
s thành string
s trong khi vẫn giữ độ chính xác không đổi với string
s. Tôi sẽ làm như thế nào? Tôi biết tôi có thể sử dụng stringstreams.precision()
, nhưng nó không làm việc vì một lý do:Điểm thập phân với std :: stringstream?
float a = 5.23;
float b = 3.134;
float c = 3.0;
std::stringstream ta;
std::stringstream tb;
std::stringstream tc;
ta << a;
tb << b;
tc << c;
ta.precision(2);
tb.precision(2);
tc.precision(2);
std::string out = "";
out += ta.str() + "\n";
out += tb.str() + "\n";
out += tc.str() + "\n";
Sẽ trở lại 5.23\n3.134\n3.0
, chứ không phải là 5.23\n3.13\n3.00
cảm ơn, nhưng nó không hoạt động. im vẫn nhận được '3.0' thay vì' 3.00' – noobcpp
@ noobcpp- Rất tiếc! Lỗi của tôi. Tôi vừa cập nhật điều này để đề cập rằng bạn cần sử dụng chế độ 'cố định' hoặc' khoa học' trên chuỗi. Hãy thử thực hiện thay đổi đó và xem nó có khắc phục được không. – templatetypedef
+1. @noobcpp: Ngoài ra, hãy kiểm tra: http://www.cplusplus.com/reference/iostream/ios_base/precision/ (mặc dù họ nói để sử dụng 0 ở một nơi mang lại cho tôi một lỗi trình biên dịch). –