5919|9

105

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

请教各位高手如何在片子里做浮点数除法??? [复制链接]

如题,最近做一个东西,需要用到除法运算,但是在IAR编译环境下simulate调试模式下尝试编译了一下,发现比如:如果做3/1024   这样的运算后的结果只能保留除法运算后的整数部分。大家有遇到过相似问题的吗??怎样解决呢??

最新回复

不好意思,贴子开太多贴错地方了!  详情 回复 发表于 2012-9-28 10:31
 
点赞 关注

回复
举报

28

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
"/" 本来就是取整运算符,而"%"则是取余运算符,两个结合着用
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

板凳
 

原帖由 历史的天空 于 2011-6-19 22:21 发表 如题,最近做一个东西,需要用到除法运算,但是在IAR编译环境下simulate调试模式下尝试编译了一下,发现比如:如果做3/1024 这样的运算后的结果只能保留除法运算后的整数部分。大家有遇到过相似问题的吗??怎样解 ...

 

有些时候,我是把被除数扩大一定倍数来运算的,这样得出的结果也是变成扩大了相应倍数的,比如转成3000/1024,这样就相当于保留了小数点后面3位的精度,不过,要注意被除数的范围,不要溢出了。

 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

4
 

原帖由 历史的天空 于 2011-6-19 22:21 发表 如题,最近做一个东西,需要用到除法运算,但是在IAR编译环境下simulate调试模式下尝试编译了一下,发现比如:如果做3/1024 这样的运算后的结果只能保留除法运算后的整数部分。大家有遇到过相似问题的吗??怎样解 ...

 

另外,如果使用的是IAR for MSP430,定义浮点数double i;,运算时尝试换成

i = 3.0/1024.0;

编译环境会将其做浮点数的除法运算。

如果用3/1024,有些编译器仍认为要做的是整型除法,那么得出的仍旧是0。

 
 
 

回复

849

帖子

0

TA的资源

纯净的硅(高级)

5
 

回复 4楼 David_Lee 的帖子

其实最直接的方法就是利用C语言当中数据类型的自动转换来实现,我们只要将除数或被除数定义成一个float或double就可以实现小数的除法。。。
 
个人签名只有想不到,没有做不到。
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

6
 
尝试用下IQmath这个库函数,ti上面有下载的.811IQmath库.
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

7
 
刚刚还在【问TI】关于数后边神秘东东
这个帖子回过一个人问数值的后缀,其实异曲同工
如果你使用编译器而非汇编来做浮点运算,那么就要保证编译器能正确识别你的数据类型,识别精度范围,long型和double型是不一样,和int型更是天差地别,所以做常数运算最要小心的就是数值的类型

就拿你这个来说,1/1024,因为前后都为整数,所以编译器默认为int型,就好像编译器默认signed,auto一样。但是你实际上想要的可能是float型,可是编译器不知道啊,所以你要让编译器知道你想要什么,比如强制类型转换,比如数值下标。前面的算法改为如下即可
1/1024f;
这一点在进行运算时很重要,可是偏偏很多C语言的书籍都不去讲它,希望大家能引以为重
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

8
 
还有一点,注意float和double的区别,有些算法里这是致命的。
 
 
 

回复

151

帖子

0

TA的资源

纯净的硅(初级)

9
 
楼主,这个问题搞定了没,我感觉是if(index == 31)这个条件的问题啊!呵呵!
 
 
 

回复

151

帖子

0

TA的资源

纯净的硅(初级)

10
 
不好意思,贴子开太多贴错地方了!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表