Я хочу преобразовать double в строку с фиксированной шириной.Преобразование double в String с фиксированной шириной
Если ширина равна 10, то я хочу, чтобы двойное значение округлялось до этой ширины.
Например, если значение = 102,121323435345 и шириной 10, то это значение должно быть,
position==> value = 102.121323
я могу добиться этого с snprintf, но я ищу для C++ родной код, чтобы сделать то же самое.
char buf[125];
snprint(buf, width, "%.6f", value);
Я пытался использовать ниже, но это не помогает мне много,
std::ostringstream oss;
oss << std::fixed << std::setw(10) << std::precision(6) << value;
станд :: setw guarantiees минимальную ширину для значения и, если значение больше, чем размер по ширине , он не округляет значения.
Спасибо.
Что-то, что мне не совсем понятно: пытаетесь ли вы печатать с шириной 10, как в вашем примере вывода, или 4 десятичных знака, например, в вашем c-коде? – Martin
Почему вы против использования snprintf? Это вполне допустимый C++. Для этого остринский поток слишком завален. – Vitali
@Martin, я хочу, чтобы ширина всегда была постоянной –