BigInteger:大数整型
BigDecimal:大数浮点型
add():加法
subtract():减法
mutiply():乘法
divide():除法
compareTo():比较
stripTrailingZeros():除去后面无用的0
toPlainString():变成字符串
substring():字符串截取
大数加法:
public static void jia(BigInteger a,BigInteger b) {//大数加法
BigInteger c=a.add(b);
System.out.println(c);
}
大叔减法:
public static void jian(BigInteger a,BigInteger b) {//大数减法
BigInteger c=a.subtract(b);
System.out.println(c);
}
大数乘法:
public static void cheng(BigInteger a,BigInteger b) {//大数乘法
BigInteger c=a.multiply(b);
System.out.println(c);
}
大数除法:
public static void chu(BigInteger a,BigInteger b) {//大数除法
BigInteger c=a.divide(b);
System.out.println(c);
}
大数比较:
public static void bijiao(BigInteger a,BigInteger b) {//大数比较
if(a.equals(BigInteger.ZERO)&&b.equals(BigInteger.ZERO)){
System.out.println("两个数都等于0!");
}
else {
int flag=a.compareTo(b);
if(flag==1) {
System.out.println(a+">"+b);
}
else if(flag==0) {
System.out.println(a+"="+b);
}
else if(flag==-1) {
System.out.println(a+"<"+b);
}
}
}
大数阶乘:
public static void jiecheng() {//大数阶乘
BigInteger ans=BigInteger.ONE;
int n=cin.nextInt();
for(int i=1;i<=n;i++) {
ans=ans.multiply(BigInteger.valueOf(i));
}
System.out.println(ans);
}
大数高精度幂:
public static void gaojingdu() {//高精度幂
while(cin.hasNext()) {
BigDecimal ans=cin.nextBigDecimal();//BigDecimal相当于double,但是精度更高
int n=cin.nextInt();
String res=ans.pow(n).stripTrailingZeros().toPlainString();//先计算ans的n次方得到结果,再去除后面无用的0,比如5.100变成5.1
if(res.startsWith("0")){//去掉前导0.比如0.01564变成.01564
res=res.substring(1);
}
System.out.println(res);
}
}
大数转换进制:
public static void change() {
while(cin.hasNext())//相当于EOF
{
String str=cin.nextLine();
BigInteger a=new BigInteger(str,10);//将string转换为10进制
System.out.println(a.toString(2));//将a转换为2进制
}
cin.close();
}
大数循环:
BigInteger m =new BigInteger("1380000000");
BigInteger start=new BigInteger("1370000000");
BigInteger one=new BigInteger("1");
int msgid=0;
for(BigInteger n=start;n.compareTo(m)<0;n=n.add(one)){
msgid++;
}
System.out.println("所有数为"+msgid);
完整代码:
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static Scanner cin=new Scanner(System.in);
public static void jia(BigInteger a,BigInteger b) {//大数加法
BigInteger c=a.add(b);
System.out.println(c);
}
public static void jian(BigInteger a,BigInteger b) {//大数减法
BigInteger c=a.subtract(b);
System.out.println(c);
}
public static void cheng(BigInteger a,BigInteger b) {//大数乘法
BigInteger c=a.multiply(b);
System.out.println(c);
}
public static void chu(BigInteger a,BigInteger b) {//大数除法
BigInteger c=a.divide(b);
System.out.println(c);
}
public static void bijiao(BigInteger a,BigInteger b) {//大数比较
if(a.equals(BigInteger.ZERO)&&b.equals(BigInteger.ZERO)){
System.out.println("两个数都等于0!");
}
else {
int flag=a.compareTo(b);
if(flag==1) {
System.out.println(a+">"+b);
}
else if(flag==0) {
System.out.println(a+"="+b);
}
else if(flag==-1) {
System.out.println(a+"<"+b);
}
}
}
public static void jiecheng() {//大数阶乘
BigInteger ans=BigInteger.ONE;
int n=cin.nextInt();
for(int i=1;i<=n;i++) {
ans=ans.multiply(BigInteger.valueOf(i));
}
System.out.println(ans);
}
public static void gaojingdu() {//高精度幂
while(cin.hasNext()) {
BigDecimal ans=cin.nextBigDecimal();//BigDecimal相当于double,但是精度更高
int n=cin.nextInt();
String res=ans.pow(n).stripTrailingZeros().toPlainString();//先计算ans的n次方得到结果,再去除后面无用的0,比如5.100变成5.1
if(res.startsWith("0")){//去掉前导0.比如0.01564变成.01564
res=res.substring(1);
}
System.out.println(res);
}
}
public static void main(String args[]) {
BigInteger a=cin.nextBigInteger();
BigInteger b=cin.nextBigInteger();
jia(a,b);
jian(a,b);
cheng(a,b);
chu(a,b);
bijiao(a,b);
jiecheng();
gaojingdu();
}
}