首页  |  关于我们  |  域名空间  |  企业邮箱  |  网站推广  |  网站优化  |  网站建设  |  软件开发  |  成功案例  |  联系我们  
域名空间
网站域名的重要性和价值体现在哪里
网站制作域名注册完成后要注意些什
如何注册.CN域名?-信阳网站制
什么是网站域名?-信阳网站制作公
注册网站域名有什么限制?-信阳网
可以注册哪些网站域名?信阳网站制
域名注册的一般程序--信阳网站制
域名空间--信阳网站制作公司
信阳网站建设营销如何成功-信阳网
C++的浮点数计算导致错误分析-
域名知识:泛域名解析相关知识-上
域名注册之后怎么才能“开通”?上
怎样做反向域名解析(反向DNS解
如何向Alexa提交网址-信阳网
Alexa 是什么?信阳网站制作
多个域名绑定一个空间互不影响-上
多个域名共用一空间-信阳网站建设
不知道如何申请绑定域名免费空间的
企业域名选择的原则和技巧--信阳
企业域名选择的原则-信阳网站建设
域名空间
 
C++的浮点数计算导致错误分析-信阳网站建设公司
信阳网站建设公司
                  
  

今天在国外一个新闻组上看到一个比较经典的错误,有一个人写了这样一段代码:

#i nclude <iostream>
using namespace std;

int main()
{
    double num, num2;
    for (num=-30; num<=30; num+=0.1)
    {
          num2=-2*(num*num)+3*(num);
          if (num2==1)
                cout << num << endl;
    }
    return(0);
}
他在新闻组上问为什么得不到为1的输出结果,回贴的人非常多,差不多都能指出这是因为计算机浮点数计算造成的问题。我在写程序的时候也遇到过这个问题,于是就写个文章来说明一下。因为计算机不能表示精确的数值,这是大家都知道的,所以在这里double*double的值也不是精确的,再怎么算,1也不一定是1,而可能是0.999999或者1.000001之类的值,至于具体是什么值就要看机器了。而且用==运算符来判断double型或者是float型的数值本身就是不正确的,应该用abs(x-1)<=0.00....来判断一个double型或者是float型数值的大小。在分形图形的绘制里面,因为经常涉及到过大或者是过小的数据,而且经常要判断是否跳出循环,所以在里面也常用这种方式做判断。

           
发表时间: 2007-8-20 15:53:12
 
首页  关于我们 域名空间 企业邮箱 网站推广 网站优化 网站建设 软件开发 成功案例 联系我们 网站地图 信阳网站制作
版权所有:豫ICP备06016752号 技术支持 信阳华欣科技有限公司
客户服务热线: 13526591043 Email:maik2#126.com(发邮件时请将#换成@)