两种方法
方法1: 乘10法
去掉整数部分后,剩余小数*10,乘N次,加上0.5后再除回去,最后return 整数部分+小数部分
#include<iostream>
#include<cmath>
using namespace std;
//用long long 取整
/*double round(double number, unsigned int bits)
{
long long integerpart = number;//取整数
number -= integerpart;
for (unsigned int i = 0; i < bits; ++i)//取整后的小数进行乘10处理
{
number *= 10;
}
number = (long long)(number + 0.5);
for (unsigned int i=0;i<bits;++i)
{
number /= 10;
}
return integerpart + number;
}*/
int main()
{
//方法一:乘10法
printf("%.2f\n", round(23.54645544545452, 2));
printf("%.3f\n", round(23.54645544545452, 3));
printf("%.4f\n", round(23.54645544545452, 4));
printf("%.5f\n", round(23.54645544545452, 5));
printf("%.6f\n", round(23.54645544545452, 6));
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
//用cmath库中的floor()取整
double round(double number, unsigned int bits)
{
double integerpart = floor(number);
number -= integerpart;
for (unsigned int i = 0; i < bits; ++i)
{
number *= 10;
}
number = floor(number + 0.5);
for (unsigned int i = 0; i < bits; ++i)
{
number /= 10;
}
return integerpart + number;
}
int main()
{
//方法一:乘10法
printf("%.2f\n", round(23.54645544545452, 2));
printf("%.3f\n", round(23.54645544545452, 3));
printf("%.4f\n", round(23.54645544545452, 4));
printf("%.5f\n", round(23.54645544545452, 5));
printf("%.6f\n", round(23.54645544545452, 6));
return 0;
}
Every step of barefoot running deserves to be recorded