"отрубает" числа типа данных float? Ну вот у меня число 6.082763, надо отрубить на цифре 2. Я использовал функцию setprecision(4) , но она округялет. Использовал printf("%.*f",n,3); (n=6.082763 (у меня это число получилось из-за корневой функции, пришлось приравнивать чтобы не морочиться)), но и оно округляет. Ну или может я просто не правильно суть задачи понял, где говорится, что "Тест будет засчитан если в ответ в выходных данных будет отличаться от точного значения не более, чем на 10^(-3)" ?
cpp code: printf("%.3f", int(6.082763 * 1000) / 1000.f); output: 6.082
P.s. Вторую часть вопроса не читал
Зачем эти преколы с умножением делением?
#include <iostream> #include <cmath> using namespace std; int main() { int x1, x2, y1, y2; float n; cin >> x1 >> y1 >> x2 >> y2; constexpr auto kScaleFactor = 1'000; x1 *= kScaleFactor; x2 *= kScaleFactor; y1 *= kScaleFactor; y2 *= kScaleFactor; auto sum = (x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1); long res = sqrt(sum); cout << res / kScaleFactor << '.' << res % kScaleFactor; }
распишите вот это просто в виде уравнения на бумажке и поймите что домножив на коэффициент и поделив на него - мы ничего с точки зрения математики не изменили - он сократится
да я не просто наугад что-то пишу, я это всё дело нотирую
тут правда я ошибся немног, пардон
Обсуждают сегодня