CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

算术平方根的结果

楼主xhwen()2006-06-02 10:34:51 在 C/C++ / C++ 语言 提问

#include   <math.h>  
  #include   <iostream>  
  #include   <iomanip>  
   
  using   namespace   std;  
   
  int   main()  
  {  
          double   x;  
          double   result;  
           
          cout<<"请输入平方根:";  
          cin>>x;  
  result   =   sqrt(x);  
  cout<<setiosflags(ios::fixed   |   ios::showpoint)<<setprecision(30);//加入头文件iomanip和这一句    
                                                                                                                                          //这样就设定,下面的cout   输出的都是限定为小数点后30位,  
  cout<<"平方根:"<<x<<endl;  
  cout<<"值:"<<result<<endl;  
  system("pause");  
  return   0;  
  }  
   
   
  //如上面的代码.用double类型的话输出的结果只有小数点后16位.怎么办.  
  //我想来想去double类型好像已经是最长的类型了.还有什么方法来解决这上问题吗?  
  //  
  //请各位大侠赐教,谢谢! 问题点数:80、回复次数:10Top

1 楼xhwen()回复于 2006-06-02 10:36:37 得分 0

#include   <iomanip>  
  ..............  
  cout<<setiosflags(ios::fixed   |   ios::showpoint)<<setprecision(30);  
   
  //如果不加这两句的话好只能输出小数点后5位.Top

2 楼jixingzhong(瞌睡虫·星辰)回复于 2006-06-02 11:00:14 得分 50

//如上面的代码.用double类型的话输出的结果只有小数点后16位.怎么办.  
   
  要那么多小数做什么?  
  精度需求?  
  这样的话就需要另外设计数据类型了,如同   巨型数类   一样。  
   
  另外,楼主你获得的   16位小数,  
  并不都是double   的有效数据,  
  后面很多都是随机数据,  
  这个是   double数据精度产生的问题   ....Top

3 楼YoungMaster(天舞)回复于 2006-06-02 11:00:38 得分 10

可以试试long   double类型  
  如果精度还不够只能自己写开平方的算法了。Top

4 楼YoungMaster(天舞)回复于 2006-06-02 11:02:25 得分 0

可以试试long   double类型  
  如果还不行的话,就自己编算法求平方根Top

5 楼jixingzhong(瞌睡虫·星辰)回复于 2006-06-02 11:10:28 得分 0

double   的结果,  
  无论小数多少位,  
  加上小数点前面的数据,   只有   16   位是有效的,  
  16   个数据后面的数字都是随机的,  
  楼主可以随意取个数据比较一下   ....  
   
  所以获取后面的数据是没有意义的   ...Top

6 楼jixingzhong(瞌睡虫·星辰)回复于 2006-06-02 11:16:07 得分 0

如果必要,  
  可以用一个数组   或者   链表,  
  迭代出   任意位数的小数   ...Top

7 楼xhwen()回复于 2006-06-02 12:03:04 得分 0

回复人:jixingzhong(瞌睡虫:情浓   云淡   风轻   宜私奔!!)   (   两星(中级))   信誉:102   2006-06-02   11:16:00   得分:0  
  ?    
  如果必要,  
  可以用一个数组   或者   链表,  
  迭代出   任意位数的小数   ...  
   
   
  //我还是不太明白你所说的.为什么会不准呢?最后第十六们好像是用四舍五入的方法取值的.  
   
   
  小虫大哥.有没有例子啊.让我看看好不好Top

8 楼crazy_lazy_pig(疯狂懒猪)回复于 2006-06-02 12:59:59 得分 20

别说平方根了,   计算机连0.1都不能精确表示,   你如果要精确度高的只能自己写程序进行高精度计算了.Top

9 楼jixingzhong(瞌睡虫·星辰)回复于 2006-06-02 14:07:03 得分 0

楼主找个   巨型数的类看看就明白了   ...Top

10 楼xhwen()回复于 2006-06-02 15:26:15 得分 0

好吧.也先只能这样子啦.  
   
  谢谢各位Top

相关问题

关键词

得分解答快速导航

  • 帖主:xhwen
  • jixingzhong
  • YoungMaster
  • crazy_lazy_pig

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo