回复:浮点数除法的困惑

emil128

  • 帖子

    271
  • 精华

    10
  • 被关注

    21

论坛等级:侠圣

注册时间:2011-05-16

普通 普通 如何晋级?

发布于 2015-05-14 12:06:39

3楼

首先要说明的是,从数学的概念上说楼主的计算不能叫整除,似乎也不能叫除尽。
只有当被除数、除数以及商都是整数,而余数是零.才能叫整除。
而除尽的商可以是有限小数。比如1/4=0.25也叫除尽。
总结来说楼主是想要判断除法的商是否为整数且余数是零。

youhm侠说的对,这和浮点数本身的精确程度有关,32位二进制数与双整型数是一一对应的,但浮点数所要表示的范围远远大于32位二进制数的范围。因此浮点数运算只是近似计算。
从楼主第二张图上30 Trunc后变成29就很明显,浮点数运算结果并非30,MD12虽然显示30,其实是个29.99几的数,去小数取整后就成了29.
看下浮点数运算结果的30和直接赋值的30有什么区别



上图显示模式选的是automatic,如果选择hex就更直观了




至于楼主想要的实现的目标,我自己试了下,加了一步逆运算,好像就能得到楼主要的结果了。
先确定用round而不是trunc,然后商取整转换到浮点数后别直接和商自己比较,而是乘以被除数后,再去和除数比较。(未经严格验证,如果有误请指正)


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54796条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。