#c #string #double
#c #строка #двойной
Вопрос:
У меня есть double 1.4291400000000001, я хочу иметь строковое представление этого double.
Какой наилучший / стандартный способ получить 1.42914
Ответ №1:
Как насчет:
std::stringstream ss;
ss << std::fixed << std::setprecision( N ) << double_number;
// ss.str() gives you the string
Комментарии:
1. поэтому нам абсолютно необходимо знать N, волшебного решения не существует.
Ответ №2:
Не гарантируется, что a double
будет иметь именно это значение : 1.4291400000000001
. Это может быть немного больше этого или немного меньше этого. Гораздо меньше хотелось бы быть именно таким.
После этого факта я могу сказать, что нет лучшего способа получить 1.42914
из этого. Вместо этого вы могли бы получить 1.42913
, поскольку фактическое значение double может быть: 1.4291399999999999
вместо приведенного выше значения.
Прочтите это: Что каждый специалист по информатике должен знать об арифметике с плавающей запятой
Комментарии:
1. да, но в обоих случаях 1.421399999 и 1.429140000001 мы обычно хотим 1.4214.. так что, возможно, есть хороший способ сделать это
2. @Guillaume07: Уверен, что есть,
setprecision(4)
.