C语言 powpow函数为什么结果不一样


这是这个问题的代码目的是实現:

大家看看能不能帮我讲解下!

返回值为double类型如果赋值给int型结果就会差1!!!

貌似MATLAB里面keil是向下求整吧所以10存儲时<10(逼近10),那么它的平方也是逼近100

你可以选一个pow(4,2)试试4可以不损耗存储,所以结果应该就是16了

是的pow(4,2)返回了16,可是pow(5,2)返回了24……而且我想要的是10的平方的结果还有其他求几次方的方法吗?在keil上
5也是不完全存储了,所以结果也是逼近25
能完全存储的是能被2^n(n=0,1,2.......)

你对这個回答的评价是


 8位的单片机 计算能力 有限......... 算浮点 很蛋疼的 直接用库函数会悲剧
要根据 8位 寄存器单个字节 特性设计算法的 .........
算个int 都要 把int 按字節拆成高低字节 分开计算
算 pow 函数 是 double ,而且 还分 小数、指数 更麻烦 ..........

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鮮体验。你的手机镜头里或许有别人想知道的答案

学习用移位寄存器驱动LED数码管的時候自己试着改了一下程序,先让数码管的各段逐一点亮检查一下很自然的就用到了for a循环和pow(2,a)计算各段的值。结果却没有出现我要的结果每次都不是点亮一段而是点亮了两、三段。用Serial.print输出一看乖乖,除了2的0和1次方确实是得1和2以外每个结果都少了1。
为了说明情况再此重现一下。如图
这是为什么呢?百撕不得骑姐呀!{:soso_e132:}

我要回帖

更多关于 C语言 pow 的文章

 

随机推荐