高精度算法有简单一点的吗?
2011-10-09
展开全部
我只有乘法和加减法的算法,没有除法的
追问
能发上来吗
追答
//计算1*2*.....*2011
import java.util.*;
class MulBigNumber{
public static StringBuffer Mul(StringBuffer s1,StringBuffer s2){
StringBuffer sb=new StringBuffer();
for(int i=0;i=0;i--){
for(int j=s2.length()-1;j>=0;j--){
int m=(int)(s1.charAt(i)-'0')*(int)(s2.charAt(j)-'0');
int n=i+j+1; //s1的第i个数与s2的第j个数乘积的位置
int x=(int)(sb.charAt(n)-'0'); //对应的sb上得位置
x=x+m; //相加
char c=String.valueOf(x%10).charAt(0);
sb.setCharAt(n,c);
//如果大于10,%10后位置前移,继续相加
while(x>=10){
m=x/10;
n--;
x=(int)(sb.charAt(n)-'0');
x=x+m;
c=String.valueOf(x%10).charAt(0);
sb.setCharAt(n,c);
}
}
}
return sb;
}
public static void main(String[] args){
StringBuffer sb=new StringBuffer("1");
StringBuffer s;
for(int i=1;i<=2011;i++){
s=new StringBuffer(String.valueOf(i));
sb=Mul(s,sb);
}
int j=0;
while(sb.charAt(j)-'0'==0){
j++;
}
sb.replace(0,j,"");
System.out.println(sb);
}
}
小数的话,要先记录小数点的位置,最后算出结果后加进去。例如0.3*0.8就有两位小数,0.12*0.1就有3位,依次类推小数点后面的位数等于两数的小数点位数之和
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询