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

[复制链接]
9815|13
 楼主| zhaohualiang 发表于 2010-12-22 18:36 | 显示全部楼层 |阅读模式
第一次接触浮点型变量,遇到一个问题请给位帮忙解决一下。
double x;
long int y;
unsigned int a=100,b=1100,c=100;

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

然后把y来显示,不知道怎么一直显示0。
老鱼探戈 发表于 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;
airwill 发表于 2010-12-22 20:11 | 显示全部楼层
同意楼上, 我也觉得是问题首先在这里, 先把 a 强制为 double 吧.
不过发现总有人在 C51 里玩浮点数, 这处理器比人笨多了, 就别折磨他了. 想想怎么化为整数来计算吧.
liguohuihui 发表于 2010-12-23 01:33 | 显示全部楼层
ayb_ice 发表于 2010-12-23 08:31 | 显示全部楼层
首先C51里double等于float,也就是单精度浮点数

结果等于0是对的,改成
x = (float)a/(b-c);即可
受不了了 发表于 2010-12-23 08:42 | 显示全部楼层
有些场合必须要浮点数的,不要回避;P
 楼主| 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楼的大哥说“ 想想怎么化为整数来计算吧 ”是什么意思啊?
ayb_ice 发表于 2010-12-23 08:50 | 显示全部楼层
51处理浮点数也还可以,不是很慢,关键是不要频繁处理即可
xlsbz 发表于 2010-12-23 21:14 | 显示全部楼层
b - c  不能等于零啊  做个判断不吃亏
原野之狼 发表于 2010-12-23 23:13 | 显示全部楼层
9# zhaohualiang
根据所需要的小数精度 放大哪些浮点数 就变成了整数了
比如 程序当中使用的精度是0.00级别 那么放大100倍 就变成整数了 整数处理起来就比较快了
当然并不是必须这么做 10楼的兄弟就说了 浮点运算如果偶尔才算一次 那么就没必要搞那么纠结了 直接浮点运算就是了
 楼主| zhaohualiang 发表于 2010-12-27 17:11 | 显示全部楼层
明白了,多谢各位
tian_hai 发表于 2011-3-25 22:20 | 显示全部楼层
受教。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

219

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部