Set the digits after decimal point

佐手、 提交于 2019-11-27 15:02:00
Matteo Italia
/* The C way */
#include <stdio.h>
...
float f = 12.12123f;
printf("%.2f",f);

// The C++ way
#include <iostream>
...
float f = 12.12123f;
std::cout.setf(std::ios_base::fixed, std::ios_base::floatfield);
std::cout.precision(2);
std::cout << f;

// The alternative C++ way
#include <iostream>
#include <iomanip>
...
float f = 12.12123f;
std::cout << std::fixed << std::setprecision(2) << f;

In C, the 0 padding is added automatically to the right if there are not enough digits to print. In the C++ examples, instead, this is disabled; to enable this behavior, you should enable the fixed mode on the stream with std::fixed (or enabling the relevant stream flags with std::ios_base::setf()).

Edit: I remembered wrong; if fixed is not set, the precision setting says to the stream the total number of digits to display, including also the ones before the decimal point. So, in this case I think that the only way is to use the fixed mode (examples fixed), which will yield the same behavior of printf.


Links:

You're looking for printf("%.2f", 12.12123); or:

#include <iostream>
#include <iomanip>

using namespace std;
cout << fixed << setprecision(2) << 12.12123;

EDIT: Question changed, so does the answer.

You never want to use direct equality with floating point, you always compare within epsilon tolerance. Your epsilon is just quite large.

Replace if (y1 == y2) with if (abs(y1 - y2) < 0.01).

double num = 1.4567;
printf("%.2f",num);

This would print 1.46

cout.precision(2);
cout <<f;
#include <iostream>
#include <iomanip>

int main ()
{
   double d = 1.242354345; 
   using namespace std;
   cout << setiosflags(ios::fixed | ios::showpoint)
        << setprecision(2)
        << d; 
}

You are probably asking wrong question. Try following:

double diff = fabs(y1-y2);
if(diff < 0.005)
    cout << "Almost same";
cout.setf(ios::fixed, ios::floatfield);
cout.precision(2);
float al = 42.645; //sample
cout << al;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!