零基础学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/164793.html原文链接:https://javaforall.net

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


相关推荐

  • QQ浏览器谷歌版吾爱破解(QQ浏览器最新谷歌版)

    ubuntu软件安装大全本文基于ubuntu16.04系统本文提供下载地址:安装包地址:https://github.com/weiguow/ubuntu-software.gitdeepin-wine地址:https://github.com/weiguow/deepin-wine-ubuntu.git1.Chrome浏览器sudowgethttps://repo.fdzh.o…

    2022年4月15日
    138
  • 数学建模五个步骤_思考问题的五步方法

    数学建模五个步骤_思考问题的五步方法五步方法五步方法顾名思义,通过五个步骤完成用数学模型解决实际问题。它包含以下五个步骤:提出问题 选择建模方法 推导模型的数学表达式 求解模型 回答问题第一步是提出问题,即对遇到的实际问题使用恰当的数学语言进行表达。一般而言,首要任务是对术语进行定义。无论是实际问题涉及到的变量,还是这些变量的单位、相关假设,都应当用等式或者不等式进行表达。在这一基础上,我们就可以用数学语言对实际问…

    2022年9月23日
    2
  • 如何提取微信公众号文章里边的视频地址[通俗易懂]

    1.首先,找到含视频的公众号文章,复制文章链接地址。2.在电脑端浏览器打开这个链接,在网页空白位置点击右键,然后点击“查看网页源代码”。3.在打开的源代码网页里Ctrl+F输入 v.qq.com(腾讯视频的都是以这个开头的),找到在src后面的链接。4. https://v.qq.com/x/page/*****.html,这个是腾讯视频网址的标准格式,把刚才复制的vid编号替换网址中的星号…

    2022年4月15日
    1.5K
  • java dom4j 增删改查[通俗易懂]

    java dom4j 增删改查[通俗易懂]packagecn.itcast.dom4j;importjava.io.FileOutputStream;importjava.io.OutputStream;importjava.util.List;importorg.dom4j.Document;importorg.dom4j.DocumentException;importorg.dom4j.Document

    2022年7月14日
    15
  • 监控平台技术调研

    监控平台技术调研强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】随着业务不断迅速的扩展,我们的项目越来越多,越来越复杂;随之而来的是系统各种问题一直在困扰着我们;经过去网上调研以及之前的经验,我们决定引入监控平台;很庆幸自己能成为该技术的前期研究者;经过自己的调研以及实践,将监控平台从无到有搭建起来,目前正在各个系统中进行推广。…

    2022年5月9日
    33
  • java 调用webservice asmx「建议收藏」

    java 调用webservice asmx「建议收藏」用的jar包axis,可以在http://download.csdn.net/download/xiaoyong8823/4391971这里下载因为最近有个项目要调用webservice接口,之前接触的都是Java开发服务端和客户端的接口,开发前服务端一般会给个以http://xxx/services?wsdl地址的文件或者地址。这次对方给我个http://xxxx/serv

    2022年6月1日
    38

发表回复

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

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