打印
[开发工具]

KEIL 浮点数取整遇到奇怪值

[复制链接]
3157|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
billy_2005|  楼主 | 2018-2-25 16:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在KEIL仿真,当遇到浮点数是128.000时,取整得出的数竟然是127,请问是什么情况?Y=(unsigned int)f_temp;       
沙发
billy_2005|  楼主 | 2018-2-25 16:06 | 只看该作者
本帖最后由 billy_2005 于 2018-2-25 16:13 编辑

其它浮点数取整无问题,就是这个128值出来的数有问题

使用特权

评论回复
板凳
billy_2005|  楼主 | 2018-2-25 16:27 | 只看该作者
应该是KEIL仿真显示128,但是16进制值是少于128一点点,所以取到127部分

使用特权

评论回复
地板
幸福小强| | 2018-2-25 17:12 | 只看该作者
不知道啊,所以定义时候就考虑好这些吧,尽量少转换,估计是Keil编译器的问题

使用特权

评论回复
5
huahuagg| | 2018-2-25 20:31 | 只看该作者
开发板数据线出问题了,要不然可以试试

使用特权

评论回复
6
xuanhuanzi| | 2018-2-25 21:24 | 只看该作者
编译器还有这个缺陷?多亏我之前没在单片机用过这种操作

使用特权

评论回复
7
mcu5i51| | 2018-2-26 09:56 | 只看该作者
如果你知道什么是浮点数,二进制怎么表示你就知道了;
如果AB是浮点数,if(a==b)...是不能用的;
你的情况请用四舍五入方法得到整数部份

使用特权

评论回复
8
香水城| | 2018-2-26 10:07 | 只看该作者
用KEIL 523测试过了,没这个问题啊。 会不会是你别的处理问题?

使用特权

评论回复
9
lvyunhua| | 2018-2-26 13:27 | 只看该作者
没有碰到这种情况。

使用特权

评论回复
10
kingkits| | 2018-2-26 13:55 | 只看该作者
加个小数就行了
比如 +0.000001

使用特权

评论回复
11
東南博士| | 2018-2-26 14:12 | 只看该作者
不可能到 128!!!

使用特权

评论回复
12
gujiamao12345| | 2018-2-26 16:51 | 只看该作者
有截图不

使用特权

评论回复
13
airwill| | 2018-2-26 19:09 | 只看该作者
128.000 用浮点数是可以精确表示的, 如果用这样的数值赋值后取整是应该得 128 的.
不过如果是计算结果为 128.000, 那就不好说了, 因为这个结果可能是舍入后的结果, 实际上还并没有达到 128.
所以, 使用浮点数, 由于不精确表示的原因, 是会有这样的问题的, 要特别留意

使用特权

评论回复
14
airwill| | 2018-2-26 19:09 | 只看该作者
128.000 用浮点数是可以精确表示的, 如果用这样的数值赋值后取整是应该得 128 的.
不过如果是计算结果为 128.000, 那就不好说了, 因为这个结果可能是舍入后的结果, 实际上还并没有达到 128.
所以, 使用浮点数, 由于不精确表示的原因, 是会有这样的问题的, 要特别留意

使用特权

评论回复
15
airwill| | 2018-2-26 19:13 | 只看该作者
128.000 用浮点数是可以精确表示的, 如果用这样的数值赋值后取整是应该得 128 的.
不过如果是计算结果为 128.000, 那就不好说了, 因为这个结果可能是舍入后的结果, 实际上还并没有达到 128.
所以, 使用浮点数, 由于不精确表示的原因, 是会有这样的问题的, 要特别留意

使用特权

评论回复
16
linqing171| | 2018-2-26 22:07 | 只看该作者
f_temp 对应的内存或者寄存器的十六进制值是多少?
keil什么版本的? 什么MCU?

使用特权

评论回复
17
sq0100| | 2018-2-27 09:15 | 只看该作者
是这样的,比如127.9999显示为128.0,但是取整截取前面就127了

使用特权

评论回复
18
Rangar| | 2018-2-27 14:53 | 只看该作者
可能是舍入后的结果

使用特权

评论回复
19
宇容创行| | 2018-2-27 16:53 | 只看该作者
+0.5 再取整

使用特权

评论回复
20
619888476| | 2018-2-27 16:55 | 只看该作者
没有遇到过这种问题

使用特权

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

本版积分规则

33

主题

84

帖子

1

粉丝