其实你用BigInteger更好啦,只要你求的阶乘不是真的很大的话就非常准确了

解决方案 »

  1.   

    当len>10之后会出错,具体请你自己去看一下,
    作为一个程序员,debug是必须学会的,如果不知道
    怎样去debug,请看一下java程序调试实用手册这本书
    这个问题其实是很简单的,只要你自己小心的去
    debug就可以解决了,不要一有什么问题就到处找什么
    高手解决,你自己也可以做到的
    for ( int  i=len;i>=10;i=i-10 ) {
    n=Long.parseLong(ji.substring(i-10,i))*shu+m;
        m=n/S;
        st2=string10(String.valueOf(n%S));
        st=st2+st;
    }你这里时做什么的啊?
    当求14!的时候
    当shu=14的时候
    st=""
    st2=""
    ji=6227020800
    n=87178291200,这是14!
    但是继续运行下去
    m=n/S也就是m=87178291200/10000000000
    m=8
    st2=string10(String.valueOf(n%S));
    结果:st2=7178291200
    st=st2+st
    st=7178291200
    这里就出错了