基本用不到-JAVA大数模板整理

 

基本开头

import java.math.*;
import java.util.*;
public class Main {
	public static void main(String args[])
	{
		Scanner cin=new Scanner(System.in);//创建输入
		BigInteger a=cin.NextBigInteger();//输入
	}

}

 

 

 

EOF:用法

 

普通的数:while(cin.hasNextInt())              

//等同于!=EOF,第一数一定要输入整形的

 

大数的一般是:while(cin.hasNextBigInteger()) 

//第一个数一定要输入大数

 

System.out.print(m.toString());    //输出                  

//m.toString()  将m转为String 类  

 

 

 

 

大数用法(整数)

 

定义

 

BigInteger []a=new BigInteger[100];  //数组

BigInteger a=new BigInteger("1");    //赋值

a= new BigInteger(""+b);             //b是int类型的

 

 

 

 

运算

//d为int型,a,b,c都为大数 

c=a.add(b);           // 相加 

c=a.subtract(b);      //   相减 

c=a.multiply(b);      // 相乘 

c=a.divide(b);        // 相除取整 

c=a.gcd(b);           //  最大公约数 

c=a.remainder(b);     //  取余 

c=a.mod(b);           // a mod b 

c=a.abs();            // a的绝对值 

c=a.negate();         //a的相反数 

c=a.pow(d);           // a的b次幂   d为int型     

c=a.max(b);           // 取a,b中较大的 

c=a.min(b);           // 取a,b中较小的 

d=a.compareTo(b);     // 比较a与b的大小d=-1小于,d=0等于,d=1大于,d为int型 

a.equals(b);          // 判断a与b是否相等   相等返回true  不相等返回false   

转换

d=a.intValue();      // 将大数a转换为 int 类型赋值给 d 

e=a.longValue();     //  将大数a转换为  long 类型赋值给 e 

f=a.floatValue();    //  将大数a转换为  float 类型赋值给 f 

g=a.doubleValue();   //  将大数a转换为  double 类型赋值给 g 

s=a.toString();      // 将大数a转换为 String 类型赋值给 s 

s=a.toPlainString();  //将大数a转换为String类型赋值给s,且不表示为科学计数法

a=BigInteger.valueOf(e);  // 将 e 以大数形式赋值给大数 a (e只能为long或int )

a=newBigInteger(s,d);  // 将s数字字符串以d进制赋值给大数a如果d=s字符数字的进制则等同于将数字字符串以大数形式赋值给大数a 

 

 

 

进制

String st = Integer.toString(num, base);
//把int型num当10进制的数转成base进制数存入st中 (base <= 35). 




int num = Integer.parseInt(st, base);

//把st当做base进制,转成10进制的int 

(parseInt有两个参数,第一个为要转的字符串,第二个为说明是什么进制).   

 

BigInteger m = new BigInteger(st, base); // st是字符串,base是st的进制. 

BigInteger a; 

int b; 

String c; 

a=cin.nextBigInteger(b);  //以b进制读入一个大数赋值给a 

c=a.toString(b);          // 将大数a以b进制的方式赋给字符串c 

a=newBigInteger(c,b);    //把c 当做“b进制“转为十进制大数赋值给a 

 

PS.

每次使用String进行单个字符操作时

需要先

 

String s;

char[] c=s.toCharArray();

 

大数用法(浮点数)

 

定义

    String a = "1";
    String b = "4.56";
    BigDecimal aBD = new BigDecimal(a);
    BigDecimal bBD = new BigDecimal(b);
    BigDecimal resultBD = aBD.divide(bBD).setScale(3, java.math.BigDecimal.ROUND_HALF_UP);
    //3是保留小数,ROUND_HALF_UP是四舍五入
    //优先使用String而不是Double构造BigDecimal
    //加减乘除参照大整数运算

除法时的舍入控制

ROUND_CEILING    //向正无穷方向舍入

ROUND_DOWN    //向零方向舍入

ROUND_FLOOR    //向负无穷方向舍入

ROUND_HALF_DOWN    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5

ROUND_HALF_EVEN    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN

ROUND_HALF_UP    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6

ROUND_UNNECESSARY    //计算结果是精确的,不需要舍入模式

ROUND_UP    //向远离0的方向舍入

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值