Search code examples
c++outputdecimal-point

How to display a fixed number of digits in C++ without rounding


I have this code (very basic):

#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;
}

When I enter two numbers (say, a = 513 and b = 791) I get 0.65. Calculator shows that the correct answer is 0.648. I understand that my code rounds up the last decimal number but this is not what I want.

How can I get it to where it just stays as 0.64 and not 0.65?


Solution

  • If you would like to truncate the value to two decimal places, you can multiply it by 100, truncate to integer, and then divide by 100, like this:

    c = a / b;
    c = floor(100 * c) / 100;
    cout<<"Result: "<<fixed<<setprecision(2)<<c<<endl;
    

    Demo on ideone.