Неполадка stringstream noshowpoint не работает

82
9

Я пытаюсь написать 67.5 как 006750 с кодом ниже:

 float price = 67.5
stringstream symbol;
symbol << setfill('0') << setw(6) << fixed << setprecision(2)
<< noshowpoint << price;

но выход - 067.50

спросил(а) 2012-07-20T23:07:00+04:00 8 лет, 3 месяца назад
1
Решение
71

Ты смущен. std::noshowpoint только конечные .0 на целочисленных полях, например 60.0 получает вывод 60, он не просто удаляет точку во всех числах.

Чтобы получить то, что вы хотите, вы можете сделать это:

float price = 67.5;
std::stringstream symbol;
symbol << std::setfill('0') << std::setw(6) << int(100 * price);

ответил(а) 2012-07-20T23:10:00+04:00 8 лет, 3 месяца назад
58

Похоже, вы пытаетесь использовать noshowpoint для удаления десятичной дроби, но если вы посмотрите на пример здесь, вы увидите, что когда pi печатается с помощью noshowpoint, он по-прежнему сохраняет десятичное значение, вероятно, потому, что вы теряете свою точность без него.

Я бы, вероятно, просто сделал некоторые манипуляции с строкой вручную здесь, так как ни одна из параметров строкового потока, которые я видел, похоже, делает то, что вы хотите.

ответил(а) 2012-07-20T23:13:00+04:00 8 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема