JAVA大数(十年oi一场空,不开longlong见祖宗)

参考文章:
Java.math.BigInteger 类
Java.math.BigDecimal 类
Java大数字运算—BigInteger类详解!
Java(一):基本数据类型/变量类型和范围

java中用于操作大数的类主要有俩种 第一个是BigInteger,代表大整数。第二个是BigDecimal,代表大浮点数。

BigInteger

import java.math.*;

public class BigIntegerDemo {

    public static void main(String[] args) {

        // create 3 BigInteger objects
        BigInteger bi1, bi2, bi3;

        bi1 = new BigInteger("7");
        bi2 = new BigInteger("20");

        // multiply bi1 with bi2 and assign result to bi3
        bi3 = bi1.multiply(bi2);

        String str = bi1 + " * " + bi2 + " = " +bi3;

        // print bi3 value
        System.out.println("Multiplication result is " +str);
    }
}

执行结果:Multiplication result is 7 * 20 = 140

import java.math.BigInteger;
import java.util.Scanner;

public class Test09 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个整型数字:");
        // 保存用户输入的数字
        int num = input.nextInt();

        // 使用输入的数字创建BigInteger对象
        BigInteger bi = new BigInteger(num + "");

        // 计算大数字加上99的结果
        System.out.println("加法操作结果:" + bi.add(new BigInteger("99")));

        // 计算大数字减去25的结果
        System.out.println("减法操作结果:" + bi.subtract(new BigInteger("25")));

        // 计算大数字乘以3的结果
        System.out.println("乘法橾作结果:" + bi.multiply(new BigInteger("3")));

        // 计算大数字除以2的结果
        System.out.println("除法操作结果:" + bi.divide(new BigInteger("2")));

        // 计算大数字除以3的商
        System.out.println("取商操作结果:" + bi.divideAndRemainder(new BigInteger("3"))[0]);

        // 计算大数字除以3的余数
        System.out.println("取余操作结果:" + bi.divideAndRemainder(new BigInteger("3"))[1]);

        // 计算大数字的2次方
        System.out.println("取 2 次方操作结果:" + bi.pow(2));

        // 计算大数字的相反数
        System.out.println("取相反数操作结果:" + bi.negate());
    }
}

BigDecimal

import java.math.*;

public class BigDecimalDemo {

   public static void main(String[] args) {

      // create 3 BigDecimal objects
      BigDecimal bg1, bg2, bg3;

      bg1 = new BigDecimal("2.310");
      bg2 = new BigDecimal("4.620");

      // multiply bg1 with bg2 and assign result to bg3
      bg3 = bg1.multiply(bg2);

      String str = "Multiplication Result is " +bg3;

      // print bg3 value
      System.out.println( str );
   }
}

执行结果:Multiplication Result is 10.672200

变量范围

基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127
 
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767
 
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647
 
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807
 
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38
 
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308
 
基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。

C++中的大数

long与long long

✒️区别
1、占用内存字节数不同:
long 类型所占字节数为:4,是一个32位的存储单元。long long类型所占字节数为:8是一个64位的存储单元。对于大型计算,常常会遇到很大的整数,并超出int所表示的范围,这时要使用long类型。long long类型则涉及更大的整数。
2、数值范围不同:
long 类型表示范围为:-2147483648~2147483647。
long long类型表示范围为:9223372036854775808~+9223372036854775807。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值