Нужно вывести результат деления двух чисел с точностью до 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
)
cout << setprecision(10) << 19.0/7.0;
выведет
2.714285714
Смотрите всякие разности форматирования тут.
Деление целочисленных дает целочисленное, остаток отсекается.
По умолчанию вещественные имеют тип данных 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
Подробнее можно почитать тут и тут.
Если выводить с помощью СИшного 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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
Я получаю от пользователя две строки, потом проверяю первую на некоторые символы -> удаляю эти символыТут проблем нет