иметь хорошее представление строки из двойного

#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) .