Почему 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 вести себя так, как я хочу?

Ответы на вопрос(1)

Ваш ответ на вопрос