为什么说32位的整数比32为的浮点数精度高? 点击:4161 | 回复:7



时空——王者之师

    
  • 精华:2帖
  • 求助:234帖
  • 帖子:482帖 | 4472回
  • 年度积分:66
  • 历史总积分:31282
  • 注册:2008年6月06日
发表于:2014-03-19 14:51:13
楼主

为什么说32位的整数比32为的浮点数精度高?

比如20用32为的整数表示,与20.0用32位的浮点数表示!



楼主最近还看过



杭州双星普天

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 725回
  • 年度积分:0
  • 历史总积分:1683
  • 注册:2012年3月02日
发表于:2014-03-19 15:41:49
1楼

这个看你的实际应用了

32位的整数 20  跟 20.0浮点表示 怎么算精度呢?

如果说 32位整数,没有采用定点放大的话,20就是 20,精度就是 个位数字,体现不了 小数点。

如果20用浮点表示,32位 浮点,可以表示到 小数点后面很多位

从这个意义上讲 32位的浮点精度 肯定比 32的整数精度高。 但是20用浮点表示,可能最后并不是 绝对的 20,可能是 20.0000001之类的,从这个角度讲,好像整数跟实际值之间没有误差,而浮点就有误差,好像整数更精确。这里是举例子说明现象而已,不代表实际数据就是那么大。但是实际上 浮点和整数的应用环境和方法并不相同,不好说直接评价他们的精度问题。

 

浮点是用 基数+指数的方式表示的, 有点记不清楚 具体的公式了,浮点确实会存在一点误差,但是一般不会影响使用的。

时空——王者之师

  • 精华:2帖
  • 求助:234帖
  • 帖子:482帖 | 4472回
  • 年度积分:66
  • 历史总积分:31282
  • 注册:2008年6月06日
发表于:2014-03-19 16:20:11
2楼

回复内容:

对: 杭州双星普天 这个看你的实际应用了32位的整数 20  跟 20.0... 内容的回复!


谢谢,就是说,浮点式表示数据,与实际值还是有误差的?

秦君_1

  • 精华:8帖
  • 求助:22帖
  • 帖子:148帖 | 4867回
  • 年度积分:1651
  • 历史总积分:39896
  • 注册:2005年6月28日
发表于:2014-03-19 17:25:26
3楼

整数有32位一说吗?你用的是哪家的PLC?

ruanxikun

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 44回
  • 年度积分:15
  • 历史总积分:98
  • 注册:2009年2月25日
发表于:2014-03-23 08:32:44
4楼

应该是小数精度高吧。     整数范围大。

第五纪冰川

  • 精华:3帖
  • 求助:5帖
  • 帖子:37帖 | 4224回
  • 年度积分:3
  • 历史总积分:12263
  • 注册:2005年2月18日
发表于:2014-03-23 10:55:59
5楼

广义上来说是的。

你看看32位有号二进制能表示的范围-2147483648~+2147483647。再看看32位浮点数,范围会大得多,+(-)1.1755×10^-38~+(-)3.4028×10^+38。可见,浮点数表示范围比32位整型大很多很多,但不管如何编码32位二进制寄存器就只能存那么些数,整形就是一个罗卜一个坑,最大的误差不会超过1。而浮点就不一样,当指数过大时,误差就很大了。

但是,但是哈,浮点数的尾数能够达到23位(二进制),对于一般使用来讲这个精度已经非常非常高了,误差会很小,几乎可以忽略不计。

而相对来说,32位整型无法表示小数,比如3/2=1,1和1.5的差距是多大,没有谁能忍受这个误差(或称错误),为了计算小数,我们不得不将2个数据分别×10(在没有浮点数功能的PLC中只能这么干)。如果需要0.001的精度呢?或更高的精度!这样就会很麻烦,转换起来自己都晕。

而浮点表示,根本不用考虑这个问题,反正那点误差对工程量来说不是什么问题。

综上述,平常使用浮点数精度比整型精度高。实际上来说,由于现在PLC的浮点运算功能非常强,一般的情况下,我都会把整型全部转为浮点数进行数学计数,反正过程中也没去考虑误差的情况,AD,DA,执行机构、、、、、所带来的误差不晓得比浮点数计数误差大多少倍,一般情况没必要考虑这个问题。由于转成浮点,给编程带来了诸多方便,至于增加的那点运算时间,一般来说也不是多大问题,反正我觉得现在PLC都还是挺快的。

 

邵-王者之师

  • 精华:1帖
  • 求助:39帖
  • 帖子:81帖 | 861回
  • 年度积分:0
  • 历史总积分:2844
  • 注册:2011年3月24日
发表于:2014-03-23 22:41:56
6楼

继续楼上:

浮点数运算精度是比较高,但是运算起来比较废时间,但是对于PLC来说,小事一桩啦,小型PLC的运算能力已经能达到基本指令0.1微妙级别了。

整形的运算可以用一些小技巧来避免误差。

比如运算百分比A相对于B的百分比

如果你用常规算法:A除以B,然后乘以100,这样算出来差距很大。

你可以这么算:A*100然后除以B,这样算出来就好很多了。

ShowFine

  • 精华:1帖
  • 求助:1帖
  • 帖子:57帖 | 753回
  • 年度积分:0
  • 历史总积分:1671
  • 注册:2003年10月29日
发表于:2014-04-01 10:07:42
7楼

回复内容:

对: 秦君_1 整数有32位一说吗?你用的是哪家的PLC? 内容的回复!




应该问问你,用的那一家的PLC, 整数居然没有32位的? 呵呵,双字整数啊 DInt


热门招聘
相关主题

官方公众号

智造工程师