打印

C51 数据类型转换 浮点转换为整型

[复制链接]
8700|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhaohualiang|  楼主 | 2010-12-22 18:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
老鱼探戈| | 2010-12-22 18:50 | 只看该作者
y=x*100.0

使用特权

评论回复
板凳
zhaohualiang|  楼主 | 2010-12-22 18:55 | 只看该作者
为什么是100.0

使用特权

评论回复
地板
cushawzsw| | 2010-12-22 18:58 | 只看该作者
x=a/(b-c);
运算后 x=0.0;

使用特权

评论回复
5
airwill| | 2010-12-22 20:11 | 只看该作者
同意楼上, 我也觉得是问题首先在这里, 先把 a 强制为 double 吧.
不过发现总有人在 C51 里玩浮点数, 这处理器比人笨多了, 就别折磨他了. 想想怎么化为整数来计算吧.

使用特权

评论回复
6
liguohuihui| | 2010-12-23 01:33 | 只看该作者
顶5楼

使用特权

评论回复
7
ayb_ice| | 2010-12-23 08:31 | 只看该作者
首先C51里double等于float,也就是单精度浮点数

结果等于0是对的,改成
x = (float)a/(b-c);即可

使用特权

评论回复
8
受不了了| | 2010-12-23 08:42 | 只看该作者
有些场合必须要浮点数的,不要回避;P

使用特权

评论回复
9
zhaohualiang|  楼主 | 2010-12-23 08:49 | 只看该作者
我按照各位的建议修改了程序:
double x,a1,b1,c1;
long int y;
unsigned int a=100,b=1100,c=100;

a1=a;
b1=b;
c1=c;
x=a1/(b1-c1);
y=x*1000;

这样把y显示就正常了。5楼的大哥说“ 想想怎么化为整数来计算吧 ”是什么意思啊?

使用特权

评论回复
10
ayb_ice| | 2010-12-23 08:50 | 只看该作者
51处理浮点数也还可以,不是很慢,关键是不要频繁处理即可

使用特权

评论回复
11
xlsbz| | 2010-12-23 21:14 | 只看该作者
b - c  不能等于零啊  做个判断不吃亏

使用特权

评论回复
12
原野之狼| | 2010-12-23 23:13 | 只看该作者
9# zhaohualiang
根据所需要的小数精度 放大哪些浮点数 就变成了整数了
比如 程序当中使用的精度是0.00级别 那么放大100倍 就变成整数了 整数处理起来就比较快了
当然并不是必须这么做 10楼的兄弟就说了 浮点运算如果偶尔才算一次 那么就没必要搞那么纠结了 直接浮点运算就是了

使用特权

评论回复
13
zhaohualiang|  楼主 | 2010-12-27 17:11 | 只看该作者
明白了,多谢各位

使用特权

评论回复
14
tian_hai| | 2011-3-25 22:20 | 只看该作者
受教。。。。。。。。。。。。

使用特权

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

本版积分规则

52

主题

218

帖子

1

粉丝