+ 7

How can one set the precision of a long double number contained in a string?

I have a string, and I wish to save a number ( type - long double ) into it. I use : std::string res; long double val; res = std::to_string(val); But, if my number val is 3.14, I get a 3.140000. I know thats the default precision. But the string is retaining the precision even when I use cout.precision(2). I have to use the string later in a SetWindowText() operation. So shall I redefine a to_str() function using ostringstream and set the precision before writing or is there a simpler way?

25th Sep 2017, 5:51 PM
Solo Wanderer 4315
Solo Wanderer 4315 - avatar
8 Answers
+ 4
@Ace So thats the only way, right sir? Ill now use stringstream. Thank You!
26th Sep 2017, 4:19 AM
Solo Wanderer 4315
Solo Wanderer 4315 - avatar
+ 4
@Zeke Williams If I could use that, I would not need to ask this question. But my output is of the following form : SetWindowText(hWnd, const_cast<char*>(mystr.c_str())); I tried using setprecision() and cout.precision(), but none work for SetWindowText().
26th Sep 2017, 4:27 AM
Solo Wanderer 4315
Solo Wanderer 4315 - avatar
+ 3
I use: #include <iomanip> ... cout << fixed; cout << setprecision (2) << doubVar << endl; And this works for me every time. The std::fixed ensures that no matter how many numbers are in front of the decimal, the same number specified in setprecision will come after the decimal.
26th Sep 2017, 4:24 AM
Zeke Williams
Zeke Williams - avatar
+ 3
@Ace But by far, is stringstream the smallest way? I wish to use the approach with minimum number of lines used. So far, to_string was the smallest, but it cannot grant me a custom precision. So Ill use stringstream now.
26th Sep 2017, 4:30 AM
Solo Wanderer 4315
Solo Wanderer 4315 - avatar
+ 2
Ah yes, I didn't quite read exactly what you wanted. This is a new experience for me
26th Sep 2017, 4:32 AM
Zeke Williams
Zeke Williams - avatar