#include <iostream>
#include <iomanip>
#include <math.h>
#include <cmath>
#include <stdint.h>
using namespace std;
float round_number(float number, int precision) {
int decimals = pow(10, precision);
return (round(number * decimals)) / decimals;
}
float pound(float x, int precision)
{
if (x == 0.)
return x;
int ex = floor(log10(abs(x))) - precision + 1;
float div = pow(10, ex);
return floor(x / div + 0.5) * div;
}
float round_n(float num, int dec)
{
double m = (num < 0.0) ? -1.0 : 1.0; // check if input is negative
double pwr = pow(10, dec);
return float(floor((double)num * m * pwr + 0.5) / pwr) * m;
}
float rounding(float src, int precision) {
int des;
double tmp;
double result;
tmp = src * pow(10, precision);
if(tmp < 0) {//negative double
des = (int)(tmp - 0.5);
}else {
des = (int)(tmp + 0.5);
}
result = (double)((double)des * pow(10, -precision));
return result;
}
int main()
{
float val = -0.125;
float res = rounding(val,2);
cout<< "res---------------->" << res <<endl;
cout<< "val---------------->" << val <<endl;
//保留小数点后2位
// cout << setiosflags(ios::fixed) << setprecision(2) << val << endl;
//保留2位有效数字
//cout << setprecision(2) << val << endl;
return 0;
}