「java大数相减」java小数相减
本篇文章给大家谈谈java大数相减,以及java小数相减对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java.求两个大数的精确加减法,a=4632864832684683568465765487657665765236465244
- 2、java大数的加减法怎么输入0结束?
- 3、java中如何对较大的数字进行计算
- 4、求JAVA代码,要求输入两个数,实现超大数的相加和相减
- 5、java中的大数类实现大数相减
java.求两个大数的精确加减法,a=4632864832684683568465765487657665765236465244
花了十分钟,亲手给你订制的,测试过了正确
下面给你贴出源代码
public class AddSub {
public static void main(String[] args) {
String a="4632864832684683568465765487657665765236465244";
String b="47";
int []pa=stringToInts(a);
int []pb=stringToInts(b);
String ans_add=add(pa, pb);
String ans_sub=sub(pb,pa);
System.out.println("相加结果是:"+ans_add);
System.out.println("相减结果是:"+ans_sub);
}
public static int[] stringToInts(String s){
int[] n = new int[s.length()];
for(int i = 0;is.length();i++){
n[i] = Integer.parseInt(s.substring(i,i+1));
}
return n;
}
public static String add(int []a,int []b){
StringBuffer sb=new StringBuffer();
int a_len= a.length-1;
int b_len=b.length-1;
int jinwei=0;//进位
while(a_len=0||b_len=0){
int temp=0;
if(a_len=0b_len=0){
temp=a[a_len]+b[b_len]+jinwei;
}else if(a_len=0){
temp=a[a_len]+jinwei;
}else if(b_len=0){
temp=b[b_len]+jinwei;
}
sb.append(temp%10+"");
jinwei=temp/10;
a_len--;b_len--;
}
return getNum(sb.reverse());
}
public static String sub(int []a,int []b){
StringBuffer sb=new StringBuffer();
boolean flag=false;//判断a是不是比b小
if(a.lengthb.length){
int c[]=a;
a=b;b=c;
flag=true;
}
int a_len= a.length-1;
int b_len=b.length-1;
int jiewei=0;//借位
while(a_len=0||b_len=0){
int temp=0;
if(a_len=0b_len=0){
if((a[a_len]-jiewei)b[b_len]){
temp=a[a_len]+10-b[b_len]-jiewei;
jiewei=1;
}else{
temp=a[a_len]-b[b_len]-jiewei;
}
}else if(a_len=0){
temp=a[a_len]-jiewei;
jiewei=0;
}
sb.append(temp+"");
a_len--;b_len--;
}
if(flag){
return getNum(sb.append("-").reverse());
}
return getNum(sb.reverse());
}
//去掉最前面的0
public static String getNum(StringBuffer sb){
while(sb.length() 1 sb.charAt(0) == '0') {
sb.deleteCharAt(0);
}
return sb.toString();
}
}
java大数的加减法怎么输入0结束?
你说的是BigInteger吧
你先以字符串的形式读进来,然后用BigInteger的构造函数通过字符串来构造得到大整数
BigInteger自带比较函数,你用它的比较函数就可以跟0比较结束,0也需要用字符串来构造他的大整数
java中如何对较大的数字进行计算
不管是不是用JAVA,其实方法都一样,利用数组比如说长度为一千的数字,可以这个 int[] number = new int[1000];相加的思路是,首先两个数组的长度必须是一致,位数不同的话,前面补0,内存有点浪费,但是计算起来比较方便。然后让它们从0到最高位,每位进行相加并保存相应的位置上。最后一步是从0开始判断有没有大于10的数字,如果有就向前面进位(前一个加1,当前位减10),这样就可以。如果是相减,其实思路还是一样的,每位先相减,再判断是否有小于0的,如果有则向前面一位借1(前一位减1,当前位加10)如果是相乘,和上面一样,不过要注意的是进位的时候,不止进一位,比如5*6,就要向前进3位了(前一位加3,当前位减30)除就比较麻烦点,要涉及到精确度问题,得看实际需要 输出就更容易了,直接for循环数组 特别要注意的是,如果最高位有进位的时候,这个是比较容易出错的地方 思路在上面,如果实现不了请留言
求JAVA代码,要求输入两个数,实现超大数的相加和相减
package test;
public class DoubleTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(Long.MAX_VALUE);//最大数:9223372036854775807
System.out.println(Long.MIN_VALUE);//最小数:-9223372036854775808
System.out.println(Double.MAX_VALUE);//最大数:1.7976931348623157E308
System.out.println(Double.MIN_VALUE);//最小数:4.9E-324
Double a = 9223372036854775807d;
Double b = 9223372036854775807d;
Double c =a+b;
System.out.println(c);
}
}
用Double型吧。最大了。
java中的大数类实现大数相减
//用BigInteger
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Arrays;
public class MenuNumber {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
while(true){
System.out.println("请输入正整数进行相关运算,输入over结束");
String str= br.readLine();
if(str.toLowerCase().equals("over")){
System.out.println("=程序结束=");
break;
}
char[] c=str.toCharArray();//从小到大排序
Arrays.sort(c);//排序
String str_1="",str_2="";
for(int i=0;ic.length;i++){
str_1+=c[i];//从小到大排序的数字
str_2+=c[c.length-1-i];//从大到小排序的数字
}
try{
//将字符串格式化为数字
BigInteger l1=new BigInteger(str_1);
BigInteger l2=new BigInteger(str_2);
//输出
System.out.println("原 数-"+str+"\n降 序-"+l2+"\n升 序-"+l1+"\n之 差-"+l2.subtract(l1));
}catch(NumberFormatException ne){
System.out.println("请输入正整数,谢谢合作!");//输入的不是数字时的处理。
}
}
}
}
关于java大数相减和java小数相减的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-24,除非注明,否则均为
原创文章,转载请注明出处。