Java解决大数、高精度问题

做了几个大数,高精度的题目,发现用C/C++实现太繁琐,了解到可以用Java里现成的 BigInteger 类和 BigDecimal 类高效解题,只需要调用其中的方法就行了。文末附有官方文档网址,本文只列出一些常用的。

BigInteger:

构造方法

BigInteger BigInteger(String val)
把字符串型的大数转换为大数对象
BigInteger BigInteger(String val, int radix)
同上,并可以设定基数

普通方法

BigInteger abs()
返回绝对值(返回BigInteger型)
BigInteger add(BigInteger val)
返回本身+val的值(返回BigInteger型)
BigInteger substract(BigInteger val)
返回本身-val的值(返回BigInteger型)
BigInteger multiply(BigInteger val)
返回本身*val的值(返回BigInteger型)
BigInteger divide(BigInteger val)
返回本身/val的值(返回BigInteger型)
double doubleValue()
将大数转换为double类型(返回double类型)
boolean equals(Object x)
比较是否相等(返回boolean值)
int intValue()
将大数转换为int型(返回int型)
BigInteger max(BigInteger val)
比较本身 和 val 谁大,返回大的值(返回BigInteger型)
BigInteger min(BigInteger val)
比较本身 和 val 谁小,返回小的值(返回BigInteger型)
BigInteger mod(BigInteger m)
返回 (本身 % m)的值(返回BigInteger型)
BigInteger pow(int exponent)
返回(本身^ exponent)的值(返回BigInteger型)
String toString()
返回十进制字符串
String toString(int radix)
返回字符串,可设置基数

常量

static BigInteger ONE
static BigInteger TEN
static BigInteger ZERO

用法

import java.math.BigInteger;
import java.util.Scanner;
import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            BigInteger a = scanner.nextBigInteger();
            BigInteger b = scanner.nextBigInteger();
            String s = a.add(b).toString(); //加法、转换为字符串
            System.out.println(s); 
            System.out.println(BigInteger.ONE); //常数
        }
 
    }

}

BigDecimal

构造方法

BigDecimal(BigInteger val)
BigDecimal(double val)
BigDecimal(int val)
BigDecimal(String val)

普通方法

BigDecimal setScale(int newScale)
设置精度
BigDecimal abs()
绝对值,精度为本身的精度
BigDecimal abs(MathContext mc)
同上,带舍入设置
BigDecimal add(BigDecimal augend)
加法,精度为 max(this.scale(), augend.scale())的精度.
BigDecimal add(BigDecimal augend, MathContext mc)
同上,带精度设置
BigDecimal plus()
加法,精度为本身精度
BigDecimal plus(MathContext mc)
带舍入设置的加法
BigDecimal divide(BigDecimal divisor)
除法
BigDecimal negate()
减法,本身精度
BigDecimal negate(MathContext mc)
减法,带舍入设置
BigDecimal multiply(BigDecimal multiplicand)
除法,精度为 (this.scale() + multiplicand.scale())的精度.
BigDecimal multiply(BigDecimal multiplicand, MathContext mc)
除法
BigDecimal pow(int n)
幂运算
BigDecimal pow(int n, MathContext mc)
幂运算
String toString()
转换为字符串

常量

static BigDecimal TEN
static BigDecimal ZERO

这里是官方文档的网址,大家感兴趣可以点进去查看所有的方法以及它们的详细用法
在这里插入图片描述
点击导航栏上BigInteger右侧出现其所有方法和解释。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

asdfghtyjukilo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值