Java超过long型范围时使用的BigInteger和BigDecimal

2023-11-08


前言


Java中当一个数的超过long型范围(能够表示64位的整数)时可以使用BigInteger和BigDecimal类型:

一、BigInteger

推荐使用BigInteger(String val)构造方法,还可以对其进行加减乘除四则运算,分别是add、subtract、multiply和divide:

public class Main {
    public static void main(String[] args) {
        BigInteger bigInteger1=new BigInteger("333333333333");
        BigInteger bigInteger2=new BigInteger("444444444444");
        System.out.println("两个数分别是"+bigInteger1+"和"+bigInteger2);
        //BigInteger类型数字的四则运算
        //加
        System.out.println(bigInteger1.add(bigInteger2));
        //减
        System.out.println(bigInteger1.subtract(bigInteger2));
        //乘
        System.out.println(bigInteger1.multiply(bigInteger2));
        //除
        System.out.println(bigInteger1.divide(bigInteger2));
    }
}

BigInteger相关API如下:
在这里插入图片描述

二、BigDecimal

在这里插入图片描述

根据运行结果发现,实际的的运算结果跟我们想要的结果是不同的,而是一个无限接近我们理想的值,原因是由于:在计算机中使用的是二进制,而浮点数运算会导致不精确。

使用BigDecimal类可以用于计算超级大型的浮点数,并且能够提供高精度的浮点运算。

在这里插入图片描述
在这里插入图片描述

注意:如果除法运算能够整除,那么BigDecimal的除法运算和BigInteger的divide方法是一样的,但是如果不能整除的话会出现报错,因此需要使用其它的divide重载方法。

在这里插入图片描述
BigDecimal相关API如下:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java超过long型范围时使用的BigInteger和BigDecimal 的相关文章

  • 在Java中将*s打印为三角形?

    我在 Java 课程中的作业是制作 3 个三角形 一份左对齐 一份右对齐 一份居中 我必须为什么类型的三角形制作一个菜单 然后输入需要多少行 三角形必须看起来像这样 到目前为止 我能够完成左对齐的三角形 但我似乎无法获得其他两个 我尝试用谷
  • 如何将 JSpinner 的值设置为特定日期

    我有一个JSpinner我添加到JPanel我想将其时间设置为 GregorianCalendar calendar JSpinner spinner new JSpinner spinner setModel model pom add
  • 将一种类型的对象声明为另一种类型的实例有什么好处? [复制]

    这个问题在这里已经有答案了 可能的重复 Base b2 new Child 是什么意思 表示 https stackoverflow com questions 4447924 what does base b2 new child sig
  • GET 请求的 Spring 注解

    这两种spring GET方法有什么区别呢 哪一种是首选方法 Component Scope request Path public class TestComponent GET Path hello public String prin
  • JavaFX 2.0 FXML 子窗口

    经过多次搜索我发现了这个问题如何创建 javafx 2 0 应用程序 MDI https stackoverflow com questions 10915388 how to create a javafx 2 0 application
  • 具有 CRUD 功能的基于 Spring Web 的管理工具

    在 PHP Symfony 世界里有一个工具叫 Sonata Adminhttps sonata project org https sonata project org 基于 AdminLTE 模板 这是一款一体化管理工具 具有登录 菜单
  • Android WebView文件上传

    我正在开发一个 Android 应用程序 基本上它是一个WebView和一个进度条 Facebook 的移动网站 m facebook com 已加载到WebView 当我单击 选择文件 按钮上传图像时 没有任何反应 我已经尝试了所有的解决
  • Java - JPanel 内有边距和 JTextArea

    我想创建这样的东西 主面板有其边距 x 并且 TextArea 位于该面板的中心 几乎填满了面板 底部是另一个具有自定义尺寸 高度 y 的面板 可以使用某些快捷方式将其切换为可见和不可见 底部面板有 FlowLayout 和几个元素 问题是
  • 从 HttpClient 3 转换为 4

    我已经成功地对所有内容进行了更改 但以下内容除外 HttpClient client HttpPost method client new DefaultHttpClient method new HttpPost url InputStr
  • 更改 JComboBox 中滚动条的大小

    有谁知道如何手动更改 jComboBox 中的滚动条大小 我已经尝试了一大堆东西 但没有任何效果 好吧 我明白了 您可以实现 PopUpMenuListener 并使用它 public void popupMenuWillBecomeVis
  • MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

    我超级卡住o 0 在尝试通过 Java 驱动程序进行身份验证时 存在捕获异常的问题 正如你可能会看到的Throwable类不工作 private MongoClient mongoClient private MongoDatabase m
  • 配置jmxremote时无法正常停止tomcat

    我添加了一个jmxremotecatalina bat中的配置 set JAVA OPTS Dcom sun management jmxremote port 9004 Dcom sun management jmxremote ssl
  • java swing:向 JTree 项目添加自定义图形按钮

    我想在 JTree 中的项目右侧添加一个带有小图标的附加按钮 这可以做到吗 如果是这样 怎么办 thanks Clamp 你在这方面成功了吗 我想做同样的事情 但很难让 JButton 响应用户 设置渲染器以显示按钮的过程很顺利 但所有鼠标
  • 如何检查日期字符串的有效性?

    在我的项目中 我需要检查日期字符串是否计算为正确的日期对象 我决定允许 yyyy MM dd 和日期格式 年 月 日 和 年 月 日 小时 分钟 我如何检查它们是否有效 我的代码为 1980 01 01 和一些奇怪的日期 如 3837 05
  • Java 中处理异步响应的设计模式

    我读过类似问答的答案 如何在 JAVA 中创建异步 HTTP 请求 https stackoverflow com questions 3142915 how do you create an asynchronous http reque
  • Java String ReplaceAll 方法给出非法重复错误?

    我有一个字符串 当我尝试运行时replaceAll方法 我收到这个奇怪的错误 String str something op str str replaceAll o n it works fine str str replaceAll n
  • JPA 将 BigDecimal 作为整数保存在数据库中

    我在数据库中有这个字段 ITEMCOST NUMERIC 13 DEFAULT 0 NOT NULL 在JAVA中 Entity中的字段定义如下 Column name ITEMCOST private BigDecimal itemCos
  • 传递 Android DialogFragment 参数时,onCreateDialog 捆绑参数意外为 null

    我正在尝试使用 DialogFragment 在 Android 中显示一个基本对话框 并使用对话框消息的参数 如中所述StackOverflow线程 https stackoverflow com questions 15459209 p
  • 在 Freemarker 模板中检查 Spring 安全角色和记录的用户名

    有谁知道 freemarker 标签来检查 freemarker 文件中的 spring 安全角色和用户名 我从网络上的几个资源中发现以下代码将打印登录的用户名 但它没有打印用户名 而是打印 登录为
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反

随机推荐

  • 【软件测试】Linux部署测试环境(在本地部署的Linux环境中进行测试活动)(Linux上安装java、mysql、redis详细过程)

    1 在Linux上安装java 使用命令行 获取root用户权限 su root 需要输入root密码 安装jdk命令 yum install java 1 8 0 openjdk 其他命令 yum search java grep jdk
  • 9.13

    70 爬楼梯 进阶 class Solution public int climbStairs int n int dp new int n 1 设置背包容量 n个 int m 2 有两个物品 注意这是一个完全背包问题 dp 0 1 ini
  • Codeforces Round #808 (Div. 2)

    小吃一波分 A Difference Operations 贪心从左往右推过去就好 首先a2肯定要是a1的倍数 不然减不到0 同样的a3也一定要是a2的倍数 但是这里a2可能被操作成a1的其他倍数 比如1 2 3 先变成 1 1 3 然后把
  • CSS基础

    CSS CSS全称层叠样式表 Cascading Style Sheets 是一种标记语言 用于给HTML结构设置样式 如 文字大小 颜色 元素宽高等 HTML搭建结构 CSS添加样式 实现结构与样式分离 CSS编写位置 行内样式 写在元素
  • 【ChatGPT】:告别单调对话,我带你体验

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 前端炫酷代码分享 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架构咱们从0说 数据流通的精妙之道 文章目录 前言 1
  • 微信的转账记录删除了还能恢复吗?2个办法教你找回

    微信的转账记录删除了还能恢复吗 除了聊天记录外 好像还有很多朋友对于转账记录的恢复问题呼声也蛮高的 所以 小编这期就给大家带来找回微信转账记录的办法 分别有2个 赶紧进入正题 我们一起来看看到底是什么办法吧 方法1 手机微信上找回微信的转账
  • phpstrom查看代码总行数_一个统计PHP代码行数的小代码

    想统计一下项目中一共有多少行代码 结果没找到什么好的工具 就自己写了一个 效率不怎么样 Created by PhpStorm User luyanfeng Date 16 7 12 Time 下午1 45 param dir return
  • 【Qt】编译QtCreator

    一 Ubuntu14 04编译QtCreator 4 0 3 1 准备工作 编译工具要求 Qt gt 5 5 0 g gt 4 7 2 编译步骤 cd
  • python3字符串内括号匹配分析器匹配分析字符串内括号的匹配闭合情况

    python3字符串内括号匹配分析器 匹配分析字符串内括号的匹配闭合情况 可通过print打印匹配情况 高亮显示错误处 思路 遍历字符串 检测到起始括号后加入到open队列中 位置 字符 检测到闭合括号后检测队列最后一位是否是对应的起始括号
  • 洛谷P1085 不高兴的津津

    题目描述 津津上初中了 妈妈认为津津应该更加用功学习 所以津津除了上学之外 还要参加妈妈为她报名的各科复习班 另外每周妈妈还会送她去学习朗诵 舞蹈和钢琴 但是津津如果一天上课超过八个小时就会不高兴 而且上得越久就会越不高兴 假设津津不会因为
  • 对js对象、数组扁平化的理解

    数组 对象扁平化主要运用的有两个知识点 一个是数据类型的判断 另一个则是递归的运用 instanceof 判断数据类型 obj instanceof Object 判断对象 arr instanceof Array 判断数组 先来一段网上c
  • go高性能并发服务器,【Zinx第四章-全局配置】Golang轻量级并发服务器框架

    四 Zinx的全局配置 随着架构逐步的变大 参数就会越来越多 为了省去我们后续大频率修改参数的麻烦 接下来Zinx需要做一个加载配置的模块 和一个全局获取Zinx参数的对象 4 1 Zinx V0 4增添全局配置代码实现 我们先做一个简单的
  • 电脑重装按键是什么

    一般在使用u盘重装系统的时候 我们需要插入启动盘进电脑 然后开机按启动快捷键进入u盘启动pe系统内重装系统 那么重装系统按键是什么呢 下面 小编就把电脑重装系统按什么键的步骤分享给大家 工具 原料 系统版本 win10 品牌型号 联想yog
  • 组合、子集问题汇总

    子集的问题的思路也分两个方向 一种是解空间树是关于每个数选还是不选 结点取值范围就是true or false 解向量的长度是固定的 即candidates的个数 而且只有完全解才是问题的解 解向量不是直接的答案 而是标志每个candida
  • 【Matlab学习笔记】【函数学习】size参数

    size A 函数是用来求矩阵的大小的 你必须首先弄清楚A到底是什么 大小是多少 比如说一个A是一个3 4的二维矩阵 1 size A 直接显示出A大小 输出 ans 3 4 2 s size A 返回一个行向量s s的第一个元素是矩阵的行
  • mis服务器系统,MIS系统中服务器"推"技术的实现

    摘要 PUSH技术作为一项先进的信息传播技术 自1996年诞生以来 基于Web 的PUSH技术迅速发展 在Internet上得到了迅速而广泛的应用 本文从企业 管理系统的开发与应用角度出发 提出了基于MIS系统中实现和运用PUSH技术 的三
  • 嘉立创免费打板方法

    下载嘉立创下单助手软件 打开软件 在左侧领取下单优惠券 填写好下打样参数后 在优惠券中选择使用优惠券 即可免费打样 10CM 10CM以内 一个月限领2次优惠券 使用优惠券条件 当客户上个月的消费低于20元 甚至是无消费 我们也为完全用嘉立
  • halcon颜色识别

    halcon颜色识别 通过不同颜色在灰度图中的阈值范围不同来区分颜色 使用阈值分别选出不同的颜色 使用灰度平均值 循环读图进行处理 HSV模型区分颜色 通过不同颜色在灰度图中的阈值范围不同来区分颜色 使用阈值分别选出不同的颜色 dev cl
  • 使用loadrunner12选择谷歌录制,出现一直在加载的状态,进不去

    选择了浏览器和URL 点击录制 弹出浏览器 一直在加载 而且进入其他网址也进不去了 需要重新打开浏览器才可以 我本来以为是项目的问题 又打开了loadrunner自带的订票系统 发现在谷歌浏览器也是一样的 但是在ie浏览器却都可以正常打开
  • Java超过long型范围时使用的BigInteger和BigDecimal

    文章目录 前言 一 BigInteger 二 BigDecimal 前言 Java中当一个数的超过long型范围 能够表示64位的整数 时可以使用BigInteger和BigDecimal类型 一 BigInteger 推荐使用BigInt