3.两个数相乘,小数点后位数没有限制,请写一个高精度算法 与大数相乘原理一样,只是调整小数点位
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 04:41:24
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)
要求给出符合要求的程序
输入 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)
要求给出符合要求的程序
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
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
3.两个数相乘,小数点后位数没有限制,请写一个高精度算法 与大数相乘原理一样,只是调整小数点位
两个数乘,小数点后位数没有限制,请写一个高精度的算法
求两个小数相乘,精确到小数点三位.是用带小数的大整数相乘的方法吗?最后的结果小数点3位该怎么处理?
一个四位数,两位加上小数点后再与原数相加,和是2012.93.这个四位数是多少?
小数点后位数不要超过3位
怎样将两个数字相乘结果等于78744.71,其中一个数字是整数,另一个数字的小数点只有两位?
Excel里怎么把两个数相乘的结果小数点后的数值去掉但不四舍五入.
C语言 输入一个数 a ,使之保留2位小数,对小数点后第3位数进行四舍五入,
大小两个数的和是2026.06,将较小数的小数点向右移动两位恰好是大数,则大数减小数等于______.
有一个四位数字,在他的某位数字后加上一个小数点,在与原数相加得1357.4,这个四位数是多少?
一个数和相邻的大数相乘减去它与相邻的小数相乘等于200求这个数
怎样计算 两个数相乘后有多少位?