[AVR单片机] atmega16数据处理的问题?

[复制链接]
1210|1
 楼主| star21 发表于 2014-8-1 16:15 | 显示全部楼层 |阅读模式
本帖最后由 star21 于 2014-8-1 17:54 编辑

uint a,b;
a=-cos(2.5);正常
b=-cos(25/10);不正常,跳变
怎么回事?
还有ICCAVR能不能直接输入圆周率
qiannengneng 发表于 2014-8-2 12:38 | 显示全部楼层
正常不正常我不知道,不过提醒一下
c语言中 cos()函数的参数是一个double(弧度值),返回的值也是double,把它赋给int会有强制类型转换,舍弃掉小数
而在你给出的两个语句的参数里,2.5是double,而(int)25/10=2。
a和b两个语句传递的参数已经是不同的,得到的值不一样是必然的。
还有,为什么要用uint呢?使用uint型的a,b在这个语句中只可能获得1,0,65535这三个值中的一个。
直接输入圆周率的话,用宏定义直接
#define Pi 3.14159
怎么样?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

70

帖子

0

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