妈蛋这个坑了我大半个小时都想不出个原因。。后来看到pow的定义才想起,数据类型很重要啊。。


1.底数用常量,指数用整型

 #include <stdio.h>
#include <math.h>
int main()
{
int i,j;
for(i=;i<;i++)
{
j=pow(,i);
printf("%d\n",j);
}
return ;
}

运行结果:

1
10
99
1000
9999
100000
1000000
9999999
99999999

答案不是1000下去而是出现了9999999,一开始百撕不得其姐。。

看到定义后改用如下

2.底数用常量,指数用double

 #include <stdio.h>
#include <math.h>
int main()
{
double i,j;
for(i=;i<;i++)
{
j=pow(,i);
printf("%.0lf\n",j);
}
return ;
}

运行结果:

1
10
100
1000
10000
100000
1000000
10000000
100000000

改用double就没事了

那么指数用常量呢

3.底数用常量,指数用常量

 #include <stdio.h>
#include <math.h>
int main()
{
double i;
i=pow(,);printf("%.0lf\n",i);
i=pow(,);printf("%.0lf\n",i);
return ;
}

运行结果:

1000
10000

可见,指数用常量也是没问题的


经过n次测试,原因找出来了

再看另一组数据:

1.指数用int,pow值赋给int,结果错误

 #include <stdio.h>
#include <math.h>
int main()
{
double d;
int p,i=;
p=pow(,i);
printf("%d\n",p);
return ;
}

运行结果:

999999999

2.指数用常量,pow值赋给int,结果正确

 #include <stdio.h>
#include <math.h>
int main()
{
double d;
int p,i=;
p=pow(,);
printf("%d\n",p);
return ;
}

运行结果:

1000000000

3.指数用常量,pow值赋给double,结果正确

 #include <stdio.h>
#include <math.h>
int main()
{
double d,p;
p=pow(,9);
printf("%.0lf\n",p);
return ;
}

运行结果:

1000000000

4.指数用int,pow值赋给double,结果正确

 #include <stdio.h>
#include <math.h>
int main()
{
double d,p;
int i=;
p=pow(,i);
printf("%.0lf\n",p);
return ;
}

运行结果:

1000000000

5.指数用double,pow值赋给int,结果错误

 #include <stdio.h>
#include <math.h>
int main()
{
double d,i=;
int p;
p=pow(,i);
printf("%d\n",p);
return ;
}

运行结果:

999999999


从数据看出

pow赋值给int的时候:指数用常量,结果正确;指数用int、double,结果错误

pow赋值给double的时候,指数用常量、int、double,结果都正确


结论,指数用什么类型无关紧要,重要的是pow的值要赋给一个double型变量。

pow()函数的精度问题的更多相关文章

  1. C语言pow()函数的计算精度问题

    编程计算 a+aa+aaa+-+aa-a(n个a)的值,n和a的值由键盘输入.例如,当n=4,a=2,表示计算2+22+222+2222的值. 程序运行结果示例: Input a,n: 2,4↙ su ...

  2. pow()函数结果强制转化为int造成误差的分析

    开发环境:codeblocks,编译器gcc 在计算102时调用pow(10, 2),再强制类型转换为int类型后输出: printf(,)); 得到的结果却是:99 这是因为 double pow( ...

  3. pow函数

    pow函数如果直接强制类型转换成int,会导致精度的损失.如果是int的幂计算,建议重写函数.或者用double型进行计算.

  4. python实现pow函数(求n次幂,求n次方)

    目录 类型一:求n次幂 类型二:求n开方 类型一:求n次幂 实现 pow(x, n),即计算 x 的 n 次幂函数.其中n为整数.pow函数的实现--leetcode 解法1:暴力法 不是常规意义上的 ...

  5. C语言pow函数编写

    C语言pow函数编写 #include<stdio.h> double chaoba(double f,double q); //声明自定义函数 void main(void) { dou ...

  6. 汇编语言计算Sin,Cos,Pow函数

    填了一下之前的坑.首先是一个题外话,在VS2015中默认汇编代码会使用SSE生成,如果想用FPU编译出FLD,FSTP这些指令,需要设置一下. 项目 >> 属性 >> C/C+ ...

  7. C语言--pow()函数实现

      为什么自己实现一个pow()函数呢?昨天在Linux操作系统中调用这一个函数时,一直报错,也没有查找到具体的原因.故心血来潮实现这一函数功能. 函数所在头文件:   在"math.h&q ...

  8. Python3 pow() 函数

    Python3 pow() 函数  Python3 数字 描述 pow() 方法返回 xy(x的y次方) 的值. 语法 以下是 math 模块 pow() 方法的语法: import math mat ...

  9. 日常踩坑——Dev C++ pow()函数的坑

    坑 Dev C++ pow()函数 那年冬天,显示屏前坐着如喽啰,那时候我含泪发誓,再也不用Dev. 蓝桥杯官网给提供的版本,没办法bug也得硬着头皮用. 16年蓝桥杯的第八题 四平方和定理: 在De ...

随机推荐

  1. C# 串口发送 陷阱,必须知道的坑

    目的:间隔100毫秒持续发送指令 由于 C#串口发送为同步方式发送,发送占用时间较长,导致发送变慢, 自己写工具并手工测试两种波特率发送占用时长如下

  2. 九度OJ 1050:完数 (数字特性)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7535 解决:3125 题目描述: 求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+ ...

  3. BZOJ2539: [Ctsc2000]丘比特的烦恼

    BZOJ2539: [Ctsc2000]丘比特的烦恼 Description 随着社会的不断发展,人与人之间的感情越来越功利化. 最近,爱神丘比特发现,爱情也已不再是完全纯洁的了. 这使得丘比特很是苦 ...

  4. LeetCode:递增的三元子序列【334】

    LeetCode:递增的三元子序列[334] 题目描述 给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列. 数学表达式如下: 如果存在这样的 i, j, k,  且满足 0 ≤ i ...

  5. Vue-router进阶、单页面应用(SPA)带来的问题

    一 . vue-router 进阶 回顾学过的vue-router,并参考官方文档学习嵌套路由等路由相关知识. 二 . 单页面应用(SPA)带来的问题 1 . 虽然单页面应用有优点 , 但是,如果后端 ...

  6. web 全栈 学习 1 工程师成长思路图

    第一部分: 技术的三个阶段 实现 ---> 借鉴 ---> 优化 实现:为了实现功能,不考虑可读性.借鉴:阅读开源代码,开源程序,学到编程思想.优化:可读性,可执行. 阶段一:实现多做事, ...

  7. nginx负载均衡设置

    在nginx的配置文件[./conf/nginx.conf]中加入: upstream test.balance123.com { server 192.168.1.223:80; server 19 ...

  8. Android Weekly Notes Issue #255

    Android Weekly Issue #255 April 30th, 2017 Android Weekly Issue #255 本期内容包括: 一种在RxJava中显示loading/con ...

  9. 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制【转】

    本文转载自:https://blog.csdn.net/freekiteyu/article/details/70082302 Android-Binder进程间通讯机制 概述 最近在学习Binder ...

  10. 郝健: Linux内存管理学习笔记-第2节课【转】

    本文转载自:https://blog.csdn.net/juS3Ve/article/details/80035753 摘要 slab./proc/slabinfo和slabtop 用户空间mallo ...