#c #string #double #double-precision
#c #строка #удвоение #двойная точность
Вопрос:
Есть ли простой способ в c увеличить точность удвоения, которая равна:
Например
double d = 3.6
было бы
d = 3.600 (adding 2 zeros)
затем этот d отправляется в класс string
std::to_string(d);
Вы можете спросить, почему? Я использую графический интерфейс (gtkmm), и в текстовом представлении каждое полученное число должно иметь одинаковую длину.
Это результат, если длина не одинакова:
4.396 3.957 11
4.183 3.783 10
3.959 3.6 9
3.723 3.404 8
3.474 3.194 7
3.207 2.967 6
2.919 2.719 5
Возможно ли увеличить десятичные дроби, то есть добавить дополнительные нули, когда значение является примитивным, или мне нужно потом манипулировать строкой?
РЕДАКТИРОВАТЬ: я должен был быть более ясным — меня не интересует std::cout . Выходные данные выше представляют графический интерфейс
Комментарии:
1. Вы можете использовать sprintf для печати большего количества десятичных цифр
Ответ №1:
Технически вы не изменяете точность типа double
. Чтобы добавить «дополнительные нули», если число слишком короткое, вы можете использовать std::stringstream
следующее:
std::stringstream s;
double d = 3.6;
s << std::fixed << std::setprecision(3) << d;
std::string res = s.str();
std::cout << res;
Вышеописанное установит точность цифр на 3
цифры и печать 3.600
.
Комментарии:
1. спасибо, я изучу это и, возможно, приму ответ
2. @user3155478 Вы должны включить
<iomanip>
, как в живой демонстрации.3. Большое спасибо — он скомпилировался, но при запуске произошел сбой. Я не использовал отладчик, но я проверил, чтобы изменить std::stringstream на std::ostringstream. Теперь это работает 🙂 🙂 .. но мне интересно, почему приложение вылетает с std::stringstream?