C/C++格式输出:向上取整、向下取整、四舍五入、保留6位小数、截断6位小数

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

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值