请问delphi 怎么计算实数的精度,让下面的代码正确了,谢谢

[复制链接]
查看11 | 回复3 | 2011-11-12 12:33:13 | 显示全部楼层 |阅读模式
这其实是个老话题,这个不只是delphi的问题,所有计算机语言,都存在类似的问题,这个与计算机CPU的原理有关系,看来你没完全理解浮点的意思。也就是说,所有浮点,都不是精确值。换句话说,这个3*0.1在我们的数学上来看,确实是0.3,然后两个0.3相减就该等于0。但是在大学的数学里有说过,所有浮点,都是近似值。你不能用我们的数学去理解CPU里面的3*0.1,它得到的只能是个近似值。前面那个je去减这个近似值,得到的只能是个无限接近0的数,而不是0。当精确度越高时,越接近0。如果你对精确度的要求高,就不要用real了,比如用Extended,这个结果就是0了。...
回复

使用道具 举报

千问 | 2011-11-12 12:33:13 | 显示全部楼层
一个数小于10的负6次方被认为等于0,减完后判断下...
回复

使用道具 举报

千问 | 2011-11-12 12:33:13 | 显示全部楼层
实数不要直接比较相等,相等不了的!相等表示成两数相减后的绝对值低于一个精度值,如:0.00001...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行