扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
检查你的C++安装目录下\include子目录下的头文件math.h,该文件是否被替代、重编、删减,其中pow代码是否存在。还可以在编译后生成的atoi.lst文件中查找错误原因。
成都创新互联公司致力于互联网品牌建设与网络营销,包括成都网站建设、网站设计、SEO优化、网络推广、整站优化营销策划推广、电子商务、移动互联网营销等。成都创新互联公司为不同类型的客户提供良好的互联网应用定制及解决方案,成都创新互联公司核心团队十年专注互联网开发,积累了丰富的网站经验,为广大企业客户提供一站式企业网站建设服务,在网站建设行业内树立了良好口碑。
函数没有问题,这是浮点数精度的问题。就是你所计算的数超过了浮点数的精度范围(不是表示范围)。
pow()函数用来求x的y次幂,x、y及函数值都是double型 ,其原型为:double pow(double x, double y)。
你把x定义成float类型试试。10的2次方在计算机算来是99999999,无限接近100但小于100,你用int类型就只取整数部分了。
朋友,pow函数的原型是double pow(double x,double y),返回值是double型的x的y次方的值。对于形参x、y,传入比double型“短”的实参是正常的且不告警。
10的2次方在计算机算来是99999999,无限接近100但小于100,你用int类型就只取整数部分了。
函数没有问题,这是浮点数精度的问题。就是你所计算的数超过了浮点数的精度范围(不是表示范围)。
朋友,pow函数的原型是double pow(double x,double y),返回值是double型的x的y次方的值。对于形参x、y,传入比double型“短”的实参是正常的且不告警。
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 pow(double x, double y);参数和返回值都是double,不是int。
4、检查你的C++安装目录下\include子目录下的头文件math.h,该文件是否被替代、重编、删减,其中pow代码是否存在。还可以在编译后生成的atoi.lst文件中查找错误原因。
5、函数没有问题,这是浮点数精度的问题。就是你所计算的数超过了浮点数的精度范围(不是表示范围)。
6、如果有正有负的情况,就需要分情况处理。不详述了。还有一种“四舍五入”取整输出的办法是:不做类型转换,而直接利用printf函数本身具有的舍入功能。具体是:printf(%0lf\n,pow(0,n));即可。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流