[开发工具] KEIL 浮点数取整遇到奇怪值

[复制链接]
1452|25
 楼主| happy_10 发表于 2019-8-25 16:24 | 显示全部楼层 |阅读模式
在KEIL仿真,当遇到浮点数是128.000时,取整得出的数竟然是127,请问是什么情况?Y=(unsigned int)f_temp;      
 楼主| happy_10 发表于 2019-8-25 16:27 | 显示全部楼层
其它浮点数取整无问题,就是这个128值出来的数有问题
 楼主| happy_10 发表于 2019-8-25 16:27 | 显示全部楼层
应该是KEIL仿真显示128,但是16进制值是少于128一点点,所以取到127部分
zwll 发表于 2019-8-25 16:31 | 显示全部楼层
不知道啊,所以定义时候就考虑好这些吧,尽量少转换,估计是Keil编译器的问题
xxmmi 发表于 2019-8-25 16:34 | 显示全部楼层

开发板数据线出问题了,要不然可以试试
zwll 发表于 2019-8-25 16:37 | 显示全部楼层
编译器还有这个缺陷?多亏我之前没在单片机用过这种操作
zwll 发表于 2019-8-25 16:41 | 显示全部楼层

如果你知道什么是浮点数,二进制怎么表示你就知道了;
如果AB是浮点数,if(a==b)...是不能用的;
你的情况请用四舍五入方法得到整数部份
zwll 发表于 2019-8-25 16:44 | 显示全部楼层
用KEIL 523测试过了,没这个问题啊。 会不会是你别的处理问题?
zwll 发表于 2019-8-25 16:48 | 显示全部楼层
没有碰到这种情况。
dingy 发表于 2019-8-25 16:52 | 显示全部楼层

加个小数就行了
比如 +0.000001
pengf 发表于 2019-8-25 16:56 | 显示全部楼层
不可能到 128!!!
xxrs 发表于 2019-8-25 16:59 | 显示全部楼层
有截图不
zwll 发表于 2019-8-25 17:03 | 显示全部楼层
128.000 用浮点数是可以精确表示的, 如果用这样的数值赋值后取整是应该得 128 的.
chenjunt 发表于 2019-8-25 17:05 | 显示全部楼层
不过如果是计算结果为 128.000, 那就不好说了, 因为这个结果可能是舍入后的结果, 实际上还并没有达到 128.
chenjunt 发表于 2019-8-25 17:07 | 显示全部楼层
所以, 使用浮点数, 由于不精确表示的原因, 是会有这样的问题的, 要特别留意
liuzaiy 发表于 2019-8-25 17:09 | 显示全部楼层
f_temp 对应的内存或者寄存器的十六进制值是多少?
songqian17 发表于 2019-8-25 17:11 | 显示全部楼层
keil什么版本的? 什么MCU?
chenho 发表于 2019-8-25 17:12 | 显示全部楼层
是这样的,比如127.9999显示为128.0,但是取整截取前面就127了
gongche 发表于 2019-8-25 17:14 | 显示全部楼层
可能是舍入后的结果
huwr 发表于 2019-8-25 17:16 | 显示全部楼层
+0.5 再取整
您需要登录后才可以回帖 登录 | 注册

本版积分规则

744

主题

7973

帖子

6

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