1、第一个计算(p1)时,r和n没有赋值;第二个计算(p)时,r和n已经赋值;所以计算结果不同。你把第6行与第7行换一下位置,就一样了。
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了兰西免费建站欢迎大家使用!
2、在double转换成int时,应当考虑到数值并不准确的问题,可以考虑自己要求的精度极限,比如是0.00000001,可以写成:printf(%d\n,(int)(a/pow(10,b-1)+0.000000005); 这样可以配合取整实现在那位上的四舍五入。
3、pow是计算浮点数的 输入值, 和返回值 都按照浮点数 double类型处理 如果用来处理int 可能有比较大的差距 即使是处理double类型, 由于pow需要兼容非整数次幂 所以采用的是其它算法 导致和a*a*a有差别也是正常的。
4、pow()函数用来求x的y次幂,x、y及函数值都是double型 ,其原型为:double pow(double x, double y)。
参数和返回值都是double,不是int。
math.h也有四舍五入(double round(double X)),向上取整(double ceil(douoble X)),向下取整(double floor(double X))任君选择,怎么取整都没问题,强制转类型就好了。。
改正方法是,既然你已经定义了全局变量,main函数里就不要再定义了。
第一个计算(p1)时,r和n没有赋值;第二个计算(p)时,r和n已经赋值;所以计算结果不同。你把第6行与第7行换一下位置,就一样了。
1、pow 函数是 double 型。是否你的编译器引入了误差。
2、pow() 函数用来求 x 的 y 次幂(次方),其原型为:double pow(double x, double y);pow()用来计算以x 为底的 y 次方值,然后将结果返回。
3、return -1表示函数返回值是-1。return 表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。