C/C++格式输出:向上取整、向下取整、四舍五入、保留6位小数、截断6位小数
#include <bits/stdc++.h> //万能头文件
1、向上取整,#include<cmath>
float a1 = 10.1;
cout << ceil(a1) << endl;
2、向下取整
float a2 = 10.1;
cout << (int)a2 << endl;
3、四舍五入
float a3 = 10.4; //4舍
cout << (int)(a3+0.5) << endl;
float a4 = 10.5; //5进
cout << (int)(a4+0.5) << endl;
4、保留6位小数
double a6 = 123.123456789; //建议使用 double
printf("%.4f\n", a6);
printf("%.5f\n", a6);
printf("%.6f\n", a6);
printf("%.7f\n", a6);
float a5 = 123.123456789; //不要使用 float,保留小数位数有限,并且跟整数部分长度有关
printf("%.4f\n", a5);
printf("%.5f\n", a5);
printf("%.6f\n", a5);
printf("%.7f\n", a5);
5、截断6位小数,#include <cstdio>、#include <string>
(1)字符串截断方式
//截断k位小数,返回ans
void fun_truc(double &num, int k)
{
char p[6] = "%.6f"; p[2] = '1' + k; //截断格式串,四舍五入,多取一位
char arr[20];
sprintf(arr, p, num);
//sprintf_s(arr, 20, p, num);
string s = string(begin(arr), begin(arr)+strlen(arr)); //去掉多截断的一位
s.pop_back();
//cout << s << endl; //字符串形式输出,可用cout
stringstream ss; //字符串转数字
ss << s; ss >> num;
//printf("%f\n", num); //数值形式输出,不能用cout
}
int main()
{
//方式一:字符串截断方式
double a7 = 1234.123456789;
fun_truc(a7, 6); //将num截断为k位小数,返回s
printf("%f\n", a7);
getchar();
return 0;
}
(2)乘大数,再截断为整数,再转化为小数,再格式化输出
//截断k位小数,返回ans
void fun_truck(double &num, int k)
{
int pk = (int)pow(10, k); //除数
int zr = int(num * pk);
int z = zr / pk; //整数部分
int r = zr % pk; //小数部分
num = z + r*0.000001; //大数吃小数
//printf("%f\n", num); //此处注意,打印数值,不能用cout
}
int main()
{
//方式二:乘大数,再截断为整数,再转化为小数,再格式化输出
double a8 = 1234.123456789;
fun_truck(a8, 6); //将num截断为k位小数,返回s
printf("%f\n", a8);
getchar();
return 0;
}