这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 51中sqrt函数用法的问题

共12条 1/2 1 2 跳转至

51中sqrt函数用法的问题

助工
2012-05-10 23:37:51     打赏
大家看看这个程序,
#include<reg52.h>
#include<math.h>
#include"DISPLAY.h"
void main()

 float j=4;
 j=sqrt(j); 
 Display_show(j);
}
显示正常,是2
但是下面这个程序就不能正常显示了,麻烦大家帮帮忙
#include<reg52.h>
#include<math.h>
#include"DISPLAY.h"
void main()
{
 int i=4;
 float j;
 j=(float)i;
 j=sqrt(j); 
 Display_show(j);
}



关键词: 函数     用法     问题    

助工
2012-05-11 23:42:49     打赏
2楼
不给力啊,没人回!

专家
2012-05-12 21:46:06     打赏
3楼
 j=(float)i;
 j=sqrt(j); 
这两句合一句,第一句强制转换赋值给下一句开方的话已经成了float型了

第一个main语句是直接把4赋给下一句开方是没问题的

助工
2012-05-13 12:30:30     打赏
4楼
你是说写成j=sqrt((float)i)吗?但是用数码管显示的值还是不正确啊!

菜鸟
2012-05-13 20:56:05     打赏
5楼
再将j换成int试试

专家
2012-05-13 21:32:57     打赏
6楼
可以试试,为什么要给j以float型呢?这是我所好奇的,最有可能出现问题的在这个float型上

高工
2012-05-15 13:06:34     打赏
7楼
在KEIL里面仿真调试一下看看,感觉应该由于转换过程,结果变成浮点了

助工
2012-05-15 23:41:12     打赏
8楼
因为math.h里面sqrt是float型的,并且我也试了一下,int型的也会错。估计还是单片本身的问题,毕竟还是51。

助工
2012-05-15 23:41:54     打赏
9楼
因为math.h里面sqrt是float型的,并且我也试了一下,int型的也会错。估计还是单片本身的问题,毕竟还是51。

助工
2012-05-15 23:44:33     打赏
10楼

如果从单片机math.h库函数中做开方的算法入手可能会找出原因,但是我没有找到库函数中做开方的算法程序。大家可以共同探讨一下。


共12条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]