算术平方根的结果
#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




