java中大数的一些基本运算

时间:2021-10-31 10:57:43
import java.math.BigInteger;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
BigInteger a,b;
while(in.hasNext())
{
a = in.nextBigInteger();
b = in.nextBigInteger();
//四则运算
System.out.println(a.add(b));
System.out.println(a.subtract(b));
System.out.println(a.multiply(b));
System.out.println(a.divide(b));
System.out.println(a.remainder(b));
//大数比较
if(a.compareTo(b)==0)
System.out.println("a==b");
else if(a.compareTo(b)>0)
System.out.println("a>b");
else {
System.out.println("a<b");
}
//绝对值
System.out.println(a.abs());
//幂
int fun = 10;
System.out.println(a.pow(fun));
//大数x进制的字符串表示
int x = 8;
System.out.println(a.toString(x));
//大数返回十进制的字符串表示
System.out.println(a.toString());
}
}
}

toPlainString() //转为普遍计数法输出

//给一个字符串1.238761976E-10
//如何得到0.0000000001238761976这个字符串呢?
BigDecimal bd = new BigDecimal("1.238761976E-10");
System.out.println(bd.toPlainString());

stripTrailingZeros() //去掉末尾0

//给一个字符串1245600.000
//如何得到1245600这个字符串?
BigDecimal bd=new BigDecimal("1245600.000");
System.out.println(bd.stripTrailingZeros());

hdu1063

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner; public class Main {
public static void main(String[] args) { Scanner in = new Scanner(System.in);
while(in.hasNext())
{
BigDecimal ans = BigDecimal.valueOf(1);
BigDecimal a = in.nextBigDecimal();
Integer n = in.nextInt();
while(n-->0)
ans = ans.multiply(a);
String str = ans.stripTrailingZeros().toPlainString().toString();
if(str.charAt(0)=='0')
str = str.substring(1);
System.out.println(str);
}
in.close();
}
}

hdu 1753

import java.math.BigDecimal;
import java.util.Scanner; public class test1 {
public static void main(String[] args) { Scanner in = new Scanner(System.in);
while(in.hasNext())
{
BigDecimal a = in.nextBigDecimal();
BigDecimal b = in.nextBigDecimal();
a=a.add(b);
String str = a.stripTrailingZeros().toPlainString().toString();
if(str.charAt(0)=='0')
str = str.substring(1);
System.out.println(str);
}
in.close();
}
}