Мне нужно округлить ответ 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;
}
Значения с плавающей точкой (т.е. float
s) обычно не хранятся в базе 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;
}
Вы можете просто умножить число на 10, округлить его, а затем снова разделить на 10:
float x = 23.428;
x = std::round(10.0*x);
x /= 10.0;