发新帖我要提问
12
返回列表
打印
[AVR单片机]

求帮忙看下这段GCC下的带浮点数的计算程序问题出在哪里?

[复制链接]
楼主: wangxxll111
手机看帖
扫描二维码
随时随地手机跟帖
21
wangxxll111|  楼主 | 2013-3-20 08:43 | 只看该作者 回帖奖励 |倒序浏览
fp123123 发表于 2013-3-18 12:16
不好意思, 上面的算错了, 用程序算了一下, 导入到EXCEL里画了个图, 从计算结果看, 不要乘上100.0f就对了

不好意思啊,还在纠结,我用了您的这段程序,可是实际情况是,测出来的值,特别的不准,该怎么表达呢,就是值在不停的调变,一会二十几,一会几度,一会可能是30几度的,来回跳!
应该不是程序的事情了吧?

使用特权

评论回复
22
wangxxll111|  楼主 | 2013-3-20 08:45 | 只看该作者
cool_coder 发表于 2013-3-19 17:20
已经说过了,这不是编译的问题。现实的情况是,对于复杂的运算和无法确定的外部输入,总会有溢出的情况出 ...

其实我觉得,你和dyubsh的意思应该是一样的吧?都是要自己来控制,保证写一个有效的程序。只是这个过程我该如何去做,才能保证我的程序是有效的,不溢出的呢?

使用特权

评论回复
23
cool_coder| | 2013-3-20 10:21 | 只看该作者
wangxxll111 发表于 2013-3-20 08:45
其实我觉得,你和dyubsh的意思应该是一样的吧?都是要自己来控制,保证写一个有效的程序。只是这个过程我 ...

不好意思,一直在纠缠开发工具的问题,有点跑题了。按我的理解,其实这些计算都是可以省掉的。因为从你的描述看,T = f1(Rt) = f2(Vo2),实际上通过Vo2的值就可以直接确定温度值。#2L-qin552011373给出的方法是工程上最常用的,计算量也可以少很多。

使用特权

评论回复
24
wangxxll111|  楼主 | 2013-3-20 12:10 | 只看该作者
cool_coder 发表于 2013-3-20 10:21
不好意思,一直在纠缠开发工具的问题,有点跑题了。按我的理解,其实这些计算都是可以省掉的。因为从你的 ...

呵呵,我知道这个方法,我现在的问题是,想写点稍微难一点的程序,所以一直在此纠结!

使用特权

评论回复
25
cool_coder| | 2013-3-20 12:48 | 只看该作者
wangxxll111 发表于 2013-3-20 12:10
呵呵,我知道这个方法,我现在的问题是,想写点稍微难一点的程序,所以一直在此纠结! ...

其实复杂的程序也是由相对简单的部分构成的,只要懂得了其中的基本原理,自然可以解决。以目前的这个小例子来说,我想可以学到以下几点:
1.方法最重要。完成同一个目的,虽然有不同的方法可以做到殊途同归,但开销是不同的。
2.了解开发工具的特点,针对不足做特殊考虑,可能的话换性能更好的。
3.未雨绸缪,做些防患于未然的工作是必要的,但是不要企图控制一切细节,特别是底层功能可以提供的那些,就不要重复做了。
4.除了防范,还要做好善后。各种异常处理工作也是必须的。

使用特权

评论回复
26
john_lee| | 2013-3-20 12:58 | 只看该作者
采纳一下3楼的意见吧,如果16bits不行就用32bits甚至64bits,都比浮点快且小。

使用特权

评论回复
27
john_lee| | 2013-3-20 13:05 | 只看该作者
wangxxll111 发表于 2013-3-20 12:10
呵呵,我知道这个方法,我现在的问题是,想写点稍微难一点的程序,所以一直在此纠结! ...

在性能相当的情况下,程序是越简单越好。
程序的复杂度是与项目的复杂度呈正比的,不能人为地复杂化。
想写复杂的程序,去做复杂的项目啊。

使用特权

评论回复
28
wangxxll111|  楼主 | 2013-3-20 15:23 | 只看该作者
john_lee 发表于 2013-3-20 13:05
在性能相当的情况下,程序是越简单越好。
程序的复杂度是与项目的复杂度呈正比的,不能人为地复杂化。
想 ...

我这也不能算是人为的复杂化吧?呵呵,我只是感觉正好有个学习提高的机会,所以多学点!
工作了好久,还在最低层混,做些打打杂的事情,伤心啊!

使用特权

评论回复
29
gdxizhilang| | 2013-3-20 16:41 | 只看该作者
john_lee 发表于 2013-3-20 13:05
在性能相当的情况下,程序是越简单越好。
程序的复杂度是与项目的复杂度呈正比的,不能人为地复杂化。
想 ...

正解,其实我得观点是,用最简单的程序完成所能完成的最复杂的事情。
但对浮点数来说,其实看上去很简洁易懂,但生成的代码太大,执行效率太低,要优化,可以用Int数变通的替代。

使用特权

评论回复
30
yhhsky| | 2013-3-30 18:57 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则