3.两个数相乘,小数点后位数没有限制,请写一个高精度算法 与大数相乘原理一样,只是调整小数点位
输入 string a,string b;计算string c=a*b; 返回 c;
1.纪录小数点在a,b中的位置l1,l2,则需要小数点后移动位置数为l=length(a)+length(b)-l1-l2-2;
去掉a,b中的小数点,(a,b小数点后移,使a,b变为整数)
计算c=a*b; (要么用java的BigInterger搞,要么自己用C++写高精度数乘法,超过百万位,用FFT,我就不细说,这都预先写过就别做了)
输出c,(注意在输出倒数第l个数时,输出一个小数点。若是输出的数少于l个,就补0)
要求给出符合要求的程序
3.两个数相乘,小数点后位数没有限制,请写一个高精度算法 与大数相乘原理一样,只是调整小数点位
答案:1 悬赏:50 手机版
解决时间 2021-07-26 10:08
- 提问者网友:献世佛
- 2021-07-25 20:02
最佳答案
- 五星知识达人网友:旧脸谱
- 2021-07-25 20:19
import java.util.*;
class AddBigNumber{
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;
int x=(int)(sb.charAt(n)-'0');
x=x+m;
char c=String.valueOf(x%10).charAt(0);
sb.setCharAt(n,c);
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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯