Количество знаков после запятой c++

100
03 января 2022, 18:40

Нужно вывести результат деления двух чисел с точностью до 10^-9

Примеры:

19/7 - вывод 2.714285714
3/2 - вывод 1.5
8/2 - вывод 4.0

Если выводить с помощью СИшного printf("%.9f", res) - выводится 4.000000000, 1.500000000 При выводе с помощью std:::cout << res - точность будет составлять лишь 10^-5 (вместо желаемого 2.714285714 при 19/7 выводится 2.71429)

Answer 1
cout << setprecision(10) << 19.0/7.0;

выведет

2.714285714

Смотрите всякие разности форматирования тут.

Answer 2
  1. Деление целочисленных дает целочисленное, остаток отсекается.

  2. По умолчанию вещественные имеют тип данных double, в спецификации формата printf() он указывается как %lf.

Пример:

printf("%.9f",19.0F/7.0F);   // float       -> double
printf("%.9lf",19.0/7.0);    // double      -> double
printf("%.9Lf",19.0L/7.0L);  // long double -> long double

Подробнее можно почитать тут и тут.

Answer 3

Если выводить с помощью СИшного printf("%.9f", res)

Просто используй спецификатор %g:

printf("%.9g", 19./7); // 2.71428571                                                                                                                                                          
printf("%.9g",  3./2); // 1.5                                                                                                                                                                 
printf("%.9g",  8./2); // 4 
printf("%.9g", sqrt(10101)); //100.503731                                                                                                                                                          

Стоит помнить, что это 9 значащих цифр, а не 8 цифр после точки. Если нужно именно последнее, то можно сделать как-то так:

double res = sqrt(10101);
printf("%.*g\n", 8 + 1 + (int)log10(res), res); // 100.50373127
READ ALSO
Алгоритмы и структуры данных (задача на c++) [закрыт]

Алгоритмы и структуры данных (задача на c++) [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

219
Замена всех пустых мест в строке

Замена всех пустых мест в строке

Я получаю от пользователя две строки, потом проверяю первую на некоторые символы -> удаляю эти символыТут проблем нет

98