零基础学Java(7)大数

零基础学Java(7)大数大数如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中两个很有用的类:BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。BigInte

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

大数

如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中两个很有用的类:BigIntegerBigDecimal。这两个类可以处理包含任意长度数字序列的数值。BigInteger类实现任意精度的整数运算,BigDecimal实现任意精度的浮点数运算。
使用静态的valueof方法可以将普通的数值转换为大数:

BigInteger a = BigInteger.valueOf(100);

对于更大的数,可以使用一个带字符串参数的构造器:

BigInteger reallyBig = new BigInteger("134443493494321591498614658741974141641519614974168416516114914196419");

另外还有一些常量:BigInteger.ZEROBigInteger.ONEBigInteger.TEN
注意:我们不能使用算术运算符(如:+和*)处理大数,而需要使用大叔类中的addmultiply方法。

BigInteger c = a.add(b); //c = a + b
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2))); //d = c * (b + 2)

案例
假设你被邀请参加抽奖活动,并从500个可能的数值中抽取60个,下面程序会告诉你中彩的概率是多少

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

/**
 * @author JKC
 * @Description:
 * @date 2022/6/29 09:42
 */
public class SixSample {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        System.out.println("你需抽多少次?");
        int k = in.nextInt();

        System.out.println("你能抽的最高数是什么?");
        int n = in.nextInt();

        BigInteger lotteryOdds = BigInteger.valueOf(1);

        for (int i = 1; i <= k; i++) {
            lotteryOdds = lotteryOdds.multiply(BigInteger.valueOf(n - i + 1).divide(BigInteger.valueOf(i)));
        }
        System.out.printf("你的概率在%d分之一", lotteryOdds);
    }
}

 

java.math.BigInteger API

BigInteger add(BigInteger other)

BigInteger subtract(BigInteger other)

BigInteger multiply(BigInteger other)

BigInteger divide(BigInteger other)

BigInteger mod(BigInteger other)
返回这个大整数和另一个大整数other的和,差,积,商以及余数

BigInteger sqrt()
得到这个BigInteger的平方根

int compareTo(BigInteger other)
如果这个大整数与另一个大整数other相等,返回0;如果这个大整数小于另一个大整数other,返回负数;否则,返回正数

static BigInteger ValueOf(long x)
返回值等于x的大整数

 

java.math.BigDecimal API

BigDecimal add(BigDecimal other)

BigDecimal subtract(BigDecimal other)

BigDecimal multiply(BigDecimal other)

BigDecimal divide(BigDecimal other)

BigDecimal divide(BigDecimal other, RoundingMode mode)
返回这个大实数与other的和,差,积。如果商是个无限循环小数,第一个divide方法会抛出一个异常。要得到一个舍入的结果,就要使用第二个方法。
RoundingMode.HALF_UP是指四舍五入方式。

int compareTo(BigDecimal other)
如果这个大实数与other相等,返回0;如果这个大实数小于other,返回附属;否则返回正数

static BigDecimal ValueOf(long x)

static BigDecimal ValueOf(long x, int n)
返回值等于x或x/10ⁿ的一个大实数
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165330.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 声源定位 DOA_声源定位

    声源定位 DOA_声源定位1基于到达时间差易受噪声反射吸收散射影响广义互相关GCC最小均方误差LMS自适应滤波器对于多声源效果不好抗噪抗混响效果不好2基于最大输出功率可控波束形成SRP-PHAT计算复杂度高,抗混响能力强3,基于高分辨率谱图估计法MUSIC多重信号分类ESPRIT(旋转不变子空间)对信号进行协方差矩阵进行空间分解(特征值分解)需要噪声与信号不相关CSSMWAVES从窄带拓展到宽带的声源定位为增加鲁棒性:后处理卡尔曼滤波粒子…

    2022年9月22日
    2
  • Java中的native修饰符

    Java中的native修饰符今天偶然看代码,发现别人有这样写的方法,并且jar里面有几个dll文件,比较奇怪,于是把代码打开,发现如下写法。public native String GSMModemSMSReadAll(String s, int i);public native String GSMModemGetErrorMsg(String s);public native boolean GSMModemI…

    2022年6月13日
    33
  • 框架结构和砖混结构的区别_react框架官网

    框架结构和砖混结构的区别_react框架官网实现:创建四个组件,分别是头组件,尾组件,list组件,item组件,存在于这个mvc中的。在APP.js中分别引入前三个个组件(item组件是存在于list中的,所以在list中引入item组件)在app.js中写好初始数据,在list中显示出来const{todos}=this.propsreturn(<ul>{todos.map(todo=>{return<Itemkey={

    2025年10月31日
    2
  • OpenGrok环境搭建[通俗易懂]

    OpenGrok环境搭建[通俗易懂]一准备工作:下载Tomcat,OpenGrok的安装包:下载地址:https://download.csdn.net/download/rocky_zhm/10864456 二安装exuberant-ctags:sudoapt-getinstallexuberant-ctags 三安装Web服务器—-TomcatOpenGrok是一个Web系统,因…

    2022年5月22日
    40
  • pytorch安装-国内镜像源

    pytorch安装-国内镜像源在安装好cuda和cudnn之后安装pytorch的方法网上很多的方法都不是镜像下载,或者镜像下载因为系统的问题找不到库打开官网,找到对应合适的版本(cuda):https://pytorch.org/get-started/locally/之后复制下面这一行指令:condainstallpytorchtorchvisiontorchaudiocudatoolkit=11.0-cpytorch接下来就是关键一步了,把-cpytorch表示的pytorch源,更改为国内的镜像。

    2022年6月24日
    58
  • sql语句练习题整理

    一、现有数据库casemanage中表结构如下图TABLENAME:afinfo Id name age birth sex memo 1 徐洪国 37 1979-03-23 男 高中 2 王芳芳 …

    2022年4月10日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号