x的x次幂(c和c++双精度浮点数输出、四舍五入控制)

徐不可说:c语言没有系统学过,漏过了几个比较常用的双精度浮点数输出、四舍五入控制函数。以下是c++实现和c实现的对比。

 

 

c++中有这三个函数用来处理小数向整数的转换: 
2.1    2.6    -2.1    -2.6 
floor : 不大于自变量的最大整数 2  2  -3  -3 
ceil :不小于自变量的最大整数 3  3  -2  -2 
round:四舍五入到最邻近的整数 2  3  -2  -3

但代码中经常要处理小数的四舍五入,例如对37.775进行保留两位小数的四舍五入输出,正确输出应该为37.78这个时候以上三个现成的函数不能够直接达到我们的目的。 
我们用以下两种思路来达到我们的目的: 
1、

float a=37.775;
a=round(a*100)/100

2、

float a=37.775
a=ceil(a*100+0.5)/100

值得注意的是 使用c++输出时 还需进行小数位数控制。 

 

 

C语言程序中浮点数类型(%.2lf)编译器默认四舍五入,(最好自行测试一遍,可能不同平台使用的C语言版本不同,语言标准也有区别,一笔糊涂账。)

%lf  双精度浮点型,也就是double型的格式,默认保留6位小数。

如:double a = 1.2; printf("%lf",a); //1.200000。

2、%.2lf  同上,不过限制了,值保留2位小数,可更改2为6、7等,表示6、7位小数。

如:double a = 1.2345; printf("%.2lf",a); //1.23。

3、%.2f  表示单精度浮点型,也就是float型的格式。

如:float a = 1.2731;  printf("%.2f",a); //1.27。 

另外,float精度是2^23,能保证6位,double的精度是2^52,能保证15位。double精度的确有那么高,但是默认打印位数没有那么多。

 

 

x的x次幂

时间限制: 3 Sec  内存限制: 128 MB

题目描述

如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗?

显然,这个值是介于2和3之间的一个数字。

请把x的值计算到小数后6位(四舍五入),并填写这个小数值。

注意:只填写一个小数,不要写任何多余的符号或说明。

#include<bits/stdc++.h>
using namespace std; 
int main()
{
	double x=2.0;
	while(x<3.0)
	{
		x=x+0.0000001;//7个小数位的形式递增 
		if(fabs(pow(x,x)-10.00)<0.000001)            //针对浮点数的绝对值 abs->整数
		{//printf("%f\n",x);          
		//printf("%lf\n",x);
		  printf("%.6lf\n",x);
		 /*cout.precision(6);
		cout<<fixed<<round(x*1000000)/1000000;*/
			break;//上诉4种皆可表示6位四舍五入小数
		}
	}
} 

 如以8位小数递增,会时间超限。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值