Почему std :: setprecision (6) передает более шести цифр в режиме фиксированной ширины?
Вывод следующего кода:
#include <limits>
#include <iostream>
#include <iomanip>
#include <limits>
#include <string>
#include <sstream>
using namespace std;
inline string lexical_cast(const float arg)
{
stringstream ss;
ss << fixed << setprecision(numeric_limits<float>::digits10) << arg;
if (!ss)
throw "Conversion failed";
return ss.str();
}
int main()
{
cout << numeric_limits<float>::digits10 << '\n';
cout << lexical_cast(32.123456789) << '\n';
}
является:
6
32.123455
Я ожидал и хотел:
6
32,1234
потому что, насколько мне известно, это степень того, чтоfloat
могу достоверно дать мне на моей системе.
Как я могу убедить IOStreams вести себя так, как я хочу?