Округление 23,428 в 23,4

Мне нужно округлить ответ 23,428 и получить 23,4.

Я немного искал об этом, и мне может понадобиться включить строку плавать вокруг но я сделал это, и CODEBLOCKS дает мне ошибку.

Примечание: файл Information.txt содержит цифры 7,5 305,5 4,09 4

Мой код:

#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

int main()
{
float m, k, kk;
int n;
float s;

ifstream fd("Information.txt");
fd >> k >> m >> kk >> n;k = k / 100;
m = m * k;
kk = kk * m;
s = kk / n;

/*s=((((k/100)*m)*kk)/n);*/fd.close();

ofstream fr ("Rezults.txt");
fr << s;
fr.close();

return 0;
}

0

Решение

Значения с плавающей точкой (т.е. floats) обычно не хранятся в базе 10, но когда вы отображаете их значения, они преобразуются в базу 10, потому что к этому привыкли большинство из нас. Выходные потоки (std::cout и fr в этом примере) выполните это преобразование с точностью по умолчанию 6 цифр. Чтобы отобразить 3 цифры, просто измените точность:

#include <iostream>
#include <iomanip>
#include <fstream>

int main() {
float num = 23.428;

std::cout << std::setprecision(3) << num << '\n';

std::ofstream fr("Rezults.txt");
fr << std::setprecision(3) << num << '\n';

return 0;
}
0

Другие решения

Вы можете просто умножить число на 10, округлить его, а затем снова разделить на 10:

float x = 23.428;
x = std::round(10.0*x);
x /= 10.0;
3

По вопросам рекламы [email protected]