#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
double a;
a = (double)6378137.0000000000000000000;
double b;
b = (double)6356752.3140000000000000000;
    double c;
    c = a*a - b*b;
double i;
i = c/(a*a);
printf("a=%.15f,\n b=%.15f, \nc=%.15f, \ni=%.15f", a, b, c, i);
return 0;
}
直接算,b什么也没干就不对了,我用windows计算机器算出来结果,和书上给出的结果不一样,
0.0066943800667647752646078789117816
书上是
0.00669437999013
如何能达到这个要求啊?

解决方案 »

  1.   

    真的没人知道吗
    matlab 据说收费,而且很复杂
    boost里面有没有这样的类呀,
    这些都在哪儿有下载呀我原来看《加密与解密》的时候有一些大数运算库,现在手头没有啊……
      

  2.   

    我这里的计算结果是i=0.006694380066765,如果把windows计算器的结果取15位的话,这个跟计算器算出来的一样,
    不知道你书上的答案怎么来的
      

  3.   

    intel 的数学库可以,去Intel官网下,只是不好用,太庞大太复杂
      

  4.   

    Matlab也一样的,我有Matlab,不过只有英文的,估计你也不会去看....
    浮点数在内存中存储的不是整数值的
    比如2.8000000(做个假设)...在内存的只能表示为2.799999...
    你可以查一下二进制表示浮点数的方法
      

  5.   

    大整数运算跟高精度浮点运算没啥大差别,稍微封装下就可,gmp 带浮点库
    这精度够了吧#include <stdio.h>
    #include <gmp.h>int main()
    {
    mpf_t a , b;

    mpf_set_default_prec( 1000 );

    mpf_init_set_d(a , 1.234567788232);
    mpf_init_set_d(b , 4.567892322112);

    mpf_add( a , a , b );
    mpf_div( a , a , b );
    mpf_div( b , b , a );

    gmp_printf( "%.100Ff\n%.100Ff\n" , a , b );
    return 0;
    }
      

  6.   

    CSDN抽风,数字稍微长点就成非法字符,晕死
      

  7.   

    我自己也找到个apfloat就是看不懂帮助文档,太多了
    gmp有帮助文档吗?
      

  8.   

    INTEL有高性能库,可以免费下载试用。