none
关于算术运算导致溢出 RRS feed

  • 问题

  •  

    数学里有这样一个公式:C(n,m)=m!/((m-n)!*n!),就是计算从m个数里面取出n个数一共有多少种组合.但是在VB里如果写这种功能的代码m值大于20的话,就会出现算术运算导致溢出的错误.即使用Long数据类型也无济于事,怎么样才能实现这种计算而又避免这种错误啊?谢谢!
    2008年11月21日 6:10

答案

  • double 也是有限的

    这里建议用高精度运算方式通过字符串或数组重新定义数据   把数字的加减法转换为中符号的加减法

    比如

    "1231237812371298371298371231"  +"209809238049820984092834"  如果按照竖式计算的方式  从末尾 "1"+"4"="5"

    满10进一  理论上我们就可以处理 2G位的加减法

     

    同样  除法的本质就是计算减法能够进行的次数 

     

     

     

    通过这种运算 我们可以在相当程度下 不受数据类型大小的限制

     

     

    具体算法可以参考

     

    http://www.docin.com/p-1018784.html

     

     

    2008年11月21日 6:26

全部回复

  • Code Snippet
    double

     

     

     

    2008年11月21日 6:19
    版主
  • double 也是有限的

    这里建议用高精度运算方式通过字符串或数组重新定义数据   把数字的加减法转换为中符号的加减法

    比如

    "1231237812371298371298371231"  +"209809238049820984092834"  如果按照竖式计算的方式  从末尾 "1"+"4"="5"

    满10进一  理论上我们就可以处理 2G位的加减法

     

    同样  除法的本质就是计算减法能够进行的次数 

     

     

     

    通过这种运算 我们可以在相当程度下 不受数据类型大小的限制

     

     

    具体算法可以参考

     

    http://www.docin.com/p-1018784.html

     

     

    2008年11月21日 6:26