您的位置:首页 > 编程语言

关于编程练习6.2出现错误的解决——浮点数的精度

2014-02-17 19:05 225 查看
       6.2中我测试时候输入了3.3,6.6,9.9得出了平均数是6.6,但是却有2个数比6.6大,在输入其他数测试时候却没有这个问题,对此表示费解。       在请教了大神的情况和在大神指导下阅读了一些文章之后,对6.2产生的问题得到了点解决,关键还是自己学艺未精,看了没记住= =。(有大神求教真心不错啊~)      下面先介绍下浮点数。      浮点数是指在计算机中用近似表示任意某个实数。具体来说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。   我在程序中使用的是双精度类型的double,其用64bits=8bytes来表示一个数,其中符号位有1位,11位是指数位,52位表示精度,因为2^52次方一共有16位,故其精度能达到15-16位。   为了表示更大的数,在浮点数的运算过程中,经常无法确保其精度。   用运算符(==,>,<)来表示浮点数的大小关系返回的值有时候是不确定的。   我们在判断浮点数相等时,推荐用范围来确定,若x在某一范围内,我们就认为相等,至于范围怎么定义,要看实际情况而已了,float,和double 各有不同。    所以const float EPSINON = 0.0001;
    if((x >= - EPSINON) && (x <= EPSINON) 这样判断是可取,至于为什么取0.0001,可以按实际情况定义。   用到浮点数时候比较小数时候要十分注意他的精度差别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐