Java大数运算

因为之前做到了大数的题目,但不想自己写关于java大数的模板了,所以这里转一下元哥的模板

原文地址

描述

import java.util.*;
import java.math.*;

public class Main{
    public static void main(String [] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){   // 文件以EOF结束
        
        }
        // in.close();
    }
}

整数-BigInteger

初始化

BigInteger a = new BigInteger("1");
BigInteger a = BigInteger.valueOf(1);

四则运算

a.add(b)        //大整数加法
a.subtract(b)   //大整数减法
a.multiply(b)   //大整数乘法
a.divide(b)     //大整数除法(取整)
a.remainder(b)  //大整数取模   
// mod();       //a.mod(b)=a%b=a.remainder(b);

比较

a.compareTo(b) == 0   // a == b
a.compareTo(b) > 0    // a > b
a.compareTo(b) < 0    // a < b
a.equals(b)           // return true or false

其他

// 进制转换   String a; i进制转换为j进制
new java.math.BigInteger(a,i).toString(j);
// 大整数绝对值
a.abs();   
// 大整数的幂
// 大整数a的exponent次幂
int exponent=10;
a.pow(exponent);   
// 返回大整数十进制的字符串表示
a.toString();
// 返回大整数p进制的字符串表示
 int p=8;
a.toString(p)
// 最大公约数
a.gcd(b);
//取反数
negate();
//将指定字符串转换为十进制表示形式
BigInteger(String val);
//将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger
BigInteger(String val,int radix);   // radix : 进制
// 基本常量:
A = BigInteger.ONE    // 1
B = BigInteger.TEN    // 10
C = BigInteger.ZERO   // 0
//计算  ~this
not()
//计算this|a
or(BigInteger a)   
//返回其值为 (this ^ val) 的 BigInteger。
xor(BigInteger val)  
// 例如a.and(b),计算a&b
and(); 
doubleValue();  //转化为double类型
longValue();    //转化为long类型
floatValue();   // 转化为float类型
intValue();     //转化为int类型
// 返回有可能是素数的、具有指定长度的正 BigInteger。
probablePrime(int bitLength, Random rnd)   
shiftLeft(int n)       // 返回其值为 (this << n) 的 BigInteger。
shiftRight(int n)      // 返回其值为 (this >> n) 的 BigInteger。

浮点数-BigDecimal

初始化

BigDecimal bigDecimal = new BigDecimal(2);
BigDecimal bDouble = new BigDecimal(2.3);
BigDecimal bString = new BigDecimal("2.3");
BigDecimal bDouble1 = BigDecimal.valueOf(2.3);
BigDecimal bDouble2 = new BigDecimal(Double.toString(2.3));
// 除法补充
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 
第一参数表示除数, 第二个参数表示小数点后保留位数,
第三个参数表示舍入模式,只有在作除法运算或四舍五入时才用到舍入模式,有下面这几种
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的方向舍入


// 四舍五入采用 ROUND_HALF_UP

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值