У меня есть этот код (очень простой):
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float a = 0.0,
b = 0.0,
c = 0.0;
cout<<"Input a: ";
cin>>a;
cout<<"input b: ";
cin>>b;
cout<<endl;
c = a / b;
cout<<"Result: "<<fixed<<setprecision(2)<<c<<endl;
return 0;
}
Когда я ввожу два числа (скажем, a = 513 и b = 791), я получаю 0,65. Калькулятор показывает, что правильный ответ — 0,648. Я понимаю, что мой код округляет последнее десятичное число, но это не то, что я хочу.
Как я могу получить его там, где он остается 0,64, а не 0,65?
Если вы хотите обрезать значение до двух десятичных разрядов, вы можете умножить его на 100, обрезать до целого числа, а затем разделить на 100, например так:
c = a / b;
c = floor(100 * c) / 100;
cout<<"Result: "<<fixed<<setprecision(2)<<c<<endl;
Ты можешь использовать trunc
усечь до определенного количества цифр:
c = a / b;
// truncate past two decimals:
c = trunc(c * 100) / 100;
cout<<"Result: "<<fixed<<setprecision(2)<<c<<endl;
из для универсальной функции:
int trunc(double val, int digits)
{
double pow10 = pow(10,digits);
return trunc(val * pow10) / pow10;
}
затем используйте
cout << "Result: " << fixed << setprecision(2) << trunc(c,2) << endl;