RT,讨论下,希望知道的指定一二。

解决方案 »

  1.   

    举个例子:
    123.456789*234.567891
    =(123456789/1000000)*(234567891/1000000)
    =(123456789*234567891)/(1000000*1000000)
    123.456789/234.567891
    =123.456789*(1/234.567891)
    =(123456789/1000000)*(1/(234567891/1000000))
    =(123456789/1000000)*(1000000/234567891)
    =(123456789*1000000)/(1000000*234567891)当然,整型数也不是说直接用int之类的,会越界的,自己实现大数类。
      

  2.   

    To:iamshuke
    不知道是我没明白你的意思,还是你没明白我的意思
      

  3.   


    浮点数是近似表达数值的,精度不可能高,像double类型的,也就小数点前后共15位左右吧。
    要想实现高精度计算,使用浮点数(double,float)是不可能实现的。可以使用整型数字模拟浮点数字,或者干脆就用BYTE数组表达,每个BYTE表达一个十进制数。至于实现加减乘除,最简单的方法就是小学学过的“列式子”法,按十进制位逐个去计算就行了。
      

  4.   

    恩,加减这样计算还稍微能理解点,乘除好处理么?
    double,float之类的,说精度是多少位,但是它们好像是二进制下的位数,换算成10进制,也没多少位了
      

  5.   

    乘除也很好处理,和列式子求乘、除的过程一样就行了,基本上都是按十进制位操作,处理好进位。不过要是想实现三角函数、n次方(n可大于0也可小于0)、log之类的就麻烦了。
      

  6.   

    不过Windows计算器确实很牛,比如1/3=0.33333333333333333333333333333333,再*3还会得1,而不是0.999999999999999999999999999999。如果键入0.33333333333333333333333333333333*3,结果就不是1,是0.999999999999999999999999999999。估计最多有1/10000的程序员能实现Windows计算器的全部功能,我不包括在内 :)
      

  7.   

    我用VB编制的超高精度科学计算器,精度可达1024位,包含常用数学函数,不需安装,很方便的。
    有需要的通知我:[email protected]