博客
关于我
Java学习之旅(三九):大数字运算
阅读量:298 次
发布时间:2019-03-03

本文共 3335 字,大约阅读时间需要 11 分钟。

Java 中的大数字操作类

在 Java 中,处理大数字的计算任务可以借助 java.math.BigIntegerjava.math.BigDecimal 这两个高级类。BigInteger 主要用于处理大整数,而 BigDecimal 则专门用于处理带有小数点的大小数。

BigInteger 类

BigInteger 类能够处理任意精度的整数,能够处理远超 Integer 类型范围的数字。Integer 类型的最大值为 2^31 - 1,而 BigInteger 则没有数值大小的限制。

创建 BigInteger 实例

要创建 BigInteger 类的实例,可以通过字符串形式的数字来实现:

BigInteger value = new BigInteger("2");

需要注意的是,字符串参数必须使用双引号包裹。

常用操作

BigInteger 类提供了丰富的运算方法,包括加法、减法、乘法、除法等。以下是一些常用的方法示例:

  • 加法

    BigInteger add = bigInteger.add(new BigInteger("100"));
  • 减法

    BigInteger subtract = bigInteger.subtract(new BigInteger("50"));
  • 乘法

    BigInteger multiply = bigInteger.multiply(new BigInteger("1000"));
  • 除法

    BigInteger divide = bigInteger.divide(new BigInteger("20"));
  • 求余

    BigInteger remainder = bigInteger.remainder(new BigInteger("30"));
  • 次方运算

    BigInteger power = bigInteger.pow(4);
  • 取反数

    BigInteger negate = bigInteger.negate();
  • 位运算

    BigInteger leftShift = bigInteger.shiftLeft(2);BigInteger rightShift = bigInteger.shiftRight(3);
示例代码

以下是一个使用 BigInteger 类进行大整数运算的示例:

import java.math.BigInteger;public class BigIntegerDemo {    public static void main(String[] args) {        BigInteger bigInteger = new BigInteger("100");                System.out.println("加法运算:" + bigInteger.add(new BigInteger("100")));        System.out.println("减法运算:" + bigInteger.subtract(new BigInteger("50")));        System.out.println("乘法运算:" + bigInteger.multiply(new BigInteger("1000")));        System.out.println("除法运算:" + bigInteger.divide(new BigInteger("20")));        System.out.println("求余运算:" + bigInteger.remainder(new BigInteger("30")));        System.out.println("次方运算:" + bigInteger.pow(4));        System.out.println("取反数运算:" + bigInteger.negate());        System.out.println("左移运算:" + bigInteger.shiftLeft(2));        System.out.println("右移运算:" + bigInteger.shiftRight(3));    }}

BigDecimal 类

BigDecimal 类用于处理带有小数点的大小数,支持任意精度的定点数计算。常见于货币计算和科学计算。

创建 BigDecimal 实例

可以通过字符串或双精度浮点数来创建 BigDecimal 实例:

BigDecimal bigDecimal = new BigDecimal("123.45");// 或者BigDecimal bigDecimal = new BigDecimal(123.45);
常用操作

BigDecimal 类的运算方法与 BigInteger 类类似,支持加法、减法、乘法和除法等操作。需要注意的是,除法操作需要指定舍入模式。

  • 加法

    BigDecimal add = bigDecimal.add(new BigDecimal("10"));
  • 减法

    BigDecimal subtract = bigDecimal.subtract(new BigDecimal("5"));
  • 乘法

    BigDecimal multiply = bigDecimal.multiply(new BigDecimal("2.5"));
  • 除法

    BigDecimal divide = bigDecimal.divide(new BigDecimal("4"), 2, BigDecimal.ROUND_HALF_UP);
舍入模式

BigDecimal 类提供多种舍入模式,常用的有:

  • BigDecimal.ROUND_UP:如果商的最后一位数字大于0,则进位。
  • BigDecimal.ROUND_DOWN:总是舍去最后一位数字。
  • BigDecimal.ROUND_CEILING:向上取整。
  • BigDecimal.ROUND_FLOOR:向下取整。
  • BigDecimal.ROUND_HALF_UP:四舍五入。
  • BigDecimal.ROUND_HALF_DOWN:四舍五入,且如果最后一位是5则舍去。
示例代码

以下是一个使用 BigDecimal 类进行大小数运算的示例:

import java.math.BigDecimal;public class BigDecimalDemo {    public static void main(String[] args) {        BigDecimal bigDecimal = new BigDecimal("123.45");                System.out.println("加法运算:" + bigDecimal.add(new BigDecimal("10.5")));        System.out.println("减法运算:" + bigDecimal.subtract(new BigDecimal("5.5")));        System.out.println("乘法运算:" + bigDecimal.multiply(new BigDecimal("2.5")));        System.out.println("除法运算(舍入到两位小数):" + bigDecimal.divide(new BigDecimal("4"), 2, BigDecimal.ROUND_HALF_UP));    }}

总结

BigIntegerBigDecimal 类为 Java 提供了强大的大数字处理能力。BigInteger 专注于处理大整数,而 BigDecimal 则扩展了支持范围,能够处理精确到任意小数位的定点数。在实际应用中,可以根据需求选择合适的类来进行数值计算,确保计算的准确性和效率。

转载地址:http://wevm.baihongyu.com/

你可能感兴趣的文章
noi 1996 登山
查看>>
noi 7827 质数的和与积
查看>>
NOI-1.3-11-计算浮点数相除的余数
查看>>
NOI2010 海拔(平面图最大流)
查看>>
NOIp2005 过河
查看>>
NOIP2011T1 数字反转
查看>>
NOIP2014 提高组 Day2——寻找道路
查看>>
noip借教室 题解
查看>>
NOIP模拟测试19
查看>>
NOIp模拟赛二十九
查看>>
Nokia5233手机和我装的几个symbian V5手机软件
查看>>
Non-final field ‘code‘ in enum StateEnum‘
查看>>
none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
查看>>
None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
查看>>
NOPI读取Excel
查看>>
NoSQL&MongoDB
查看>>
NoSQL介绍
查看>>
Notadd —— 基于 nest.js 的微服务开发框架
查看>>
Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
Notepad++在线和离线安装JSON格式化插件
查看>>