Java - 常用类库 - BigDecimal/BigInteger

2023-11-10

常用类库 - BigDecimal/BigInteger

用于处理任意精度的浮点数和任意长度的整数

一、BigDecimal类

BigDecimal(Java SE 11 & JDK 11)
当处理的浮点数精度超出float乃至double的限制时,可以交给BigDecimal来处理,使用BigDecimal进行运算可避免精度丢失。BigDecimal类实现了大多数的运算方法,不同于double等基本类型,在进行加减乘除等操作时,不能直接使用运算符来计算,而是要用类的各种方法来实现。

常用构造方法:
1.BigDecimal​(double val)

将double转换为BigDecimal,它是 double的二进制浮点值的精确十进制表示形式。

2.BigDecimal​(String val)

将字符串构造为BigDecimal浮点数。

常用方法:
1.add​(BigDecimal augend)

返回此BigDecimal的值与另一个BigDecimal值的和。

2.divide(BigDecimal divisor)

返回此BigDecimal的值与另一个BigDecimal值的商(浮点数)。

3.divideAndRemainder​(BigDecimal divisor)

返回BigDecimal数组,第1个值为商(整数部分),第2个值为余数。

4.doubleValue()

将BigDecimal转换为double。

5.floatValue()

将BigDecimal转换为float。

6.intValue()

将BigDecimal转换为int。

7.longValue()

将BigDecimal转换为long。

8.max​(BigDecimal val)

返回两个BigDecimal的最大值。

9.min​(BigDecimal val)

返回两个BigDecimal的最小值。

10.multiply(BigDecimal multiplicand)

返回此BigDecimal的值与另一个BigDecimal值的积。

11.subtract​(BigDecimal subtrahend)

返回此BigDecimal的值与另一个BigDecimal值的差。

12.valueOf​(double val)

将double转换为BigDecimal。

public static void main(String[] args) {
	System.out.println(0.3+0.6); //0.8999999999999999,直接运算,精度丢失
	BigDecimal b1 = new BigDecimal("0.3");
	BigDecimal b2 = new BigDecimal("0.6");
	BigDecimal b3 = b1.add(b2); //加
	BigDecimal b4 = b1.subtract(b2); //减
	BigDecimal b5 = b1.divide(b2); //乘
	BigDecimal b6 = b1.multiply(b2); //除
	System.out.println(b1); //0.3
	System.out.println(b2); //0.6
	System.out.println(b3); //0.9
	System.out.println(b4); //-0.3
	System.out.println(b5); //0.5
	System.out.println(b6); //0.18
	double d1 = b1.doubleValue();
	System.out.println(d1); //0.3
}

二、BigInteger类

BigInteger(Java SE 11 & JDK 11)
当处理的整数超出int乃至long的处理范围时,可以交给BigInteger来处理。BigInteger类实现了大多数的运算方法,不同于int等基本类型,在进行加减乘除等操作时,不能直接使用运算符来计算,而是要用类的各种方法来实现。

常用构造方法:
1.BigInteger​(String val)

将字符串构造为BigInteger​​整数。

常用方法:
1.add​(BigInteger val)

返回此BigInteger的值与另一个BigInteger值的和。

2.divide​(BigInteger val)

返回此BigInteger的值与另一个BigInteger值的商(整数部分)。

3.divideAndRemainder​(BigInteger val)

返回BigInteger数组,第1个值为商(整数部分),第2个值为余数。

4.doubleValue()

将BigInteger转换为double。

5.floatValue()

将BigInteger转换为float。

6.intValue()

将BigInteger转换为int。

7.longValue()

将BigInteger转换为long。

8.max​(BigInteger val)

返回两个BigInteger的最大值。

9.min​(BigInteger val)

返回两个BigInteger的最小值。

10.mod​(BigInteger m)

返回此BigInteger的值除以另一个BigInteger值的余数。

11.multiply​(BigInteger val)

返回此BigInteger的值与另一个BigInteger值的积。

12.subtract​(BigInteger val)

返回此BigInteger的值与另一个BigInteger值的差。

13.valueOf​(long val)

将long转换为BigInteger。

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

Java - 常用类库 - BigDecimal/BigInteger 的相关文章

  • 我可以确定谁在调用 Java 中的函数或实例化类吗? [复制]

    这个问题在这里已经有答案了 可能的重复 在Java中 如何使用堆栈跟踪或反射找到方法的调用者 https stackoverflow com questions 421280 in java how do i find the caller
  • JNA - EnumProcessModules() 未返回所有 DLL?

    我试图从游戏中读取坐标 当我在通过 OpenProcess 接收的 HANDLE 上使用 ReadProcessMemory 以及我在 CheatEngine 中找到的内存时 效果非常好 例如 如果我知道正在运行的进程中的浮点值是0x5AB
  • Java中RandomAccessFile的并发

    我正在创建一个RandomAccessFile对象通过多个线程写入文件 在 SSD 上 每个线程都尝试在文件中的特定位置写入直接字节缓冲区 并且我确保线程写入的位置不会与另一个线程重叠 file getChannel write buffe
  • 检查发送到网页的请求数

    我正在编写一个 Java 多线程应用程序 它可以访问不同 Web 服务器的数百万个 有时甚至数十亿个 URL 这个想法是检查这些 URL 是否给出有效的 200OK 响应或 404 其他代码 我如何知道我的程序是否不会在他们的服务器上造成高
  • jvm中本机代码如何转换为机器代码[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我读过一些文章说 jvm将字节码转换为机器码 jvm将字节码转换为本机代码 jvm 将字节码转换为系统调用 系统调用又由操作系统与硬件
  • 使用正则表达式验证输入字符串是否为 0-255 之间的数字

    我在将输入字符串与正则表达式匹配时遇到问题 我想验证输入数字在 0 255 之间并且长度最多应为 3 个字符 代码工作正常 但当我输入 000000 至任意长度时 显示 true 而不是 false 这是我的代码 String IP 000
  • ResultSet:通过索引检索列值与通过标签检索

    使用 JDBC 时 我经常遇到这样的结构 ResultSet rs ps executeQuery while rs next int id rs getInt 1 Some other actions 我问自己 以及代码作者 为什么不使用
  • MediaPlayer.create() 始终返回 null

    我以前用过媒体播放器 从来没有遇到过这个问题 每当我尝试使用 MediaPlayer create 时 该方法都会给我 null 并且我无法播放声音 我有什么遗漏的吗 public class Game extends Activity p
  • 按文件名过滤 eclipse 中的警告

    我们使用 Eclipse 进行 Java 开发 并使用 Maven 将 JSP 编译成 servlet 以便在嵌入式 Jetty 实例中使用 这意味着要从 Eclipse 运行该项目 我必须包含 target jsp source 作为源文
  • spring mvc 跟踪引用页面

    在基于注释的弹簧控制器中 如果用户正在url com first page并点击一个链接或提交一份表格指出url com second page 如何制作second page知道url of first page所以这样second pa
  • 如何使用 Selenium 中的索引切换到窗口

    由于selenium不提供切换到窗口 多个窗口 的方法 但我想使用index html自定义方法来切换到不同的窗口 但下面的代码没有按预期工作 请建议以下方法的最佳实施 public void switchToWindowIndex int
  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • 在 Java 中创建带注释的对象时收到通知

    Intent 我有一个自定义 Java 注释 DynamicField public class RESTEndpointInvoker DynamicField key httpTimeout private long httpTimeo
  • 两条腿的 OAuth 和 Gmail Atom feed

    我们正在尝试让 2 legged OAuth 与 Gmail Atom feed 一起使用 我们使用 John Kristian Praveen Alavilli 和 Dirk Ba lfanz 贡献的 Java 库 http oauth
  • 获取包中声明的所有 Java 类的名称

    我正在编写一个功能 它将有助于将类放入我的程序的某个包中 另外 我只想要子类某个类的类 我需要这些类才能调用它们的静态方法 有没有一种自动的方法来做到这一点 如果是的话 速度慢吗 如果我不清楚 我想要的是这样的 ArrayList
  • 如何在Java中模拟引用传递?

    我是一个十足的 Java 菜鸟 我知道 Java 将所有参数视为按值传递 并且还有其他几个线程人们对此进行了解释 例如 在 C 中我可以这样做 void makeAThree int n n 3 int main int myInt 4 m
  • Java 验证日期为 yyyyMMddHHmmss

    我想在java中验证给定的日期格式为yyyyMMddHHmmss 状况 应符合格式 yyyyMMddHHmmss 它应该验证当前日期 它应该验证与当前小时有 3 小时或 3 小时差异的小时数 如果满足所有三个条件 Java 方法应返回 tr
  • 构造函数参数和属性一起出现在 bean 定义中

  • 在没有EOF的情况下停止读取java中的输入

    In 问题 如何停止读取输入 我的程序继续运行 要求更多输入 public static void main String args throws Exception BufferedReader br new BufferedReader
  • Java 可变 BigInteger 类

    我正在使用 BigIntegers 进行计算 该计算使用一个调用 multiply 大约 1000 亿次的循环 并且从 BigInteger 创建新对象使其非常慢 我希望有人编写或找到了 MutableBigInteger 类 我在 jav

随机推荐

  • 多元线性回归的梯度下降

    目录 1 线性回归的基本概念 2 线性回归算法 3 多元梯度下降算法 4 总结 1 线性回归的基本概念 在回归分析中 如果只包含一个自变量和一个因变量 且二者关心可近似用一条直线表示 则称该回归分析为一元线性回归分析 如果包含两个及两个以上
  • 多模态(图像和文本跨模态)分类

    文章目录 前言 一 数据集介绍 二 处理过程 1 处理图片文本标签数据 1 将label由消极 中立 积极的标签变成数字 0 1 2 并且将其保存在path2label字典中 2 分别将图像文件和文本文件形成列表 3 分别将文本内容 对应的
  • 计算机插本2a院校,广东省专插本2A院校有哪些

    满意答案 yandianhua 2012 12 23 采纳率 45 等级 12 已帮助 15307人 晨光英语考试团很荣幸为您解答 2011年广东省本科插班生招生院校名单 院校代码 院校名称 以下院校是2A线的 533 深圳大学 534 五
  • 刷题之455. 分发饼干 -----贪心初试

    假设你是一位很棒的家长 想要给你的孩子们一些小饼干 但是 每个孩子最多只能给一块饼干 对每个孩子 i 都有一个胃口值 g i 这是能让孩子们满足胃口的饼干的最小尺寸 并且每块饼干 j 都有一个尺寸 s j 如果 s j gt g i 我们可
  • 性能测试浅谈

    早期的性能测试更关注后端服务的处理能力 一个用户去访问一个页面的请求过程 如上图 数据传输时间 当你从浏览器输入网址 敲下回车 开始 真实的用户场景请不要忽视数据传输时间 想想你给远方的朋友写信 信件需要经过不同的交通运输工具送到朋友手上
  • 去除移动端h5的横向滚动条

    我的问题是 在移动端第一次访问h5页面时 页面尺寸被放大了一点 没有手机适配 所以出现了横向滚动条 手指缩小页面尺寸后 横向滚动条才消失 解决方案 在入口页面index html的标签里添加下面一行代码
  • Qt中的中信号槽与异步调用

    Qt中使用信号 槽机制处理跨对象之间的调用 该机制的好处有 1 使得调用关系的绑定和解除十分灵活 不必修改类成员函数代码 2 在不暴露更多全局变量的情况下实现跨命名空间调用 3 可以多个信号对应多个槽 也可以信号之间绑定 对应于GUI中的逻
  • python 使用for循环简单爬取图片(1)

    现在的网站大多做了反爬处理 找一个能爬的网站还真不容易 下面开始一步步实现 1 简单爬录目图片 1 import urllib request 2 import re 3 4 def gethtml url 5 page urllib re
  • Spring_AOP_0100_Annotation入门

    为了以后更好的实习 今天了解了一下spring的aop的基础知识 做了一些简单的测试 算入门aop吧 记录下来 方便以后查阅 spring的版本2 5 6 由于目前aspectj的aop比spring做得更出色 而且spring也提倡直接使
  • Jmeter(三十五) - 从入门到精通进阶篇 - 关联(详解教程)

    1 简介 上一篇中介绍了如果想要同时发送多条请求 那么怎样才能让每条数据某些请求参数改变呢 这就用到了jMeter参数化 在实际测试场景中 我们往往还有这样的需求 登录后服务器响应的token作为下次请求的参数 这就是所谓的参数关联 当请求
  • impala目录

    文章目录 1 入门 2 shell命令使用 3 java操作 1 入门 2 shell命令使用 https blog csdn net qq 21383435 article details 84925144 3 java操作
  • 最新xcode打包IPA(完整详细图文)

    网上的xcode打包ipa教程大多太旧而且又不完整 所以整理了一个最新的完整详细的xcode打包APP的图文教程分享给小白到大神路上的你我 xcode打包IPA包之前先申请iOS证书 然后导入证书才能打包导出IPA包 分为5 步进行 1 申
  • SpringCloud(一)——微服务基础及简单微服务项目搭建

    单体应用开发 传统的web应用开发是将所有的功能模块都打包到一个包中一起部署运行 单体应用集成简洁部署简单 但是随着项目复杂的的增加 单体应用会变得越来越大越来越臃肿 每次进行小功能的更新都需要更新整个包重新部署 什么是微服务 微服务没有一
  • Design Compiler (九)——综合后的形式验证

    这里来讲一下formality的使用 貌似跟tcl和DC没有很强的联系 然而说没有联系 也是不正确的 在综合完成之后 可以进行形式验证 此外这里不是专门讲解formality的使用的 因此只会简单地实践一下它的用法 formality是Sy
  • 前端之HTML

    目录 1 编写一个HTML代码 2 HTML常见语法 2 1注释标签 2 2标题标签 2 3段落标签 2 4换行标签 2 5格式化标签 2 6图片标签 2 6 1img标签的其他属性 2 7超链接标签 2 7 1空连接 2 8列表标签 2
  • SpringBoot+Hibernate+Spring Data JPA+Maven入门

    整合SpringBoot 和 Hibernate 实现简单的CRUD 框架版本 SpringBoot 2 0 0 RELEASE Hibernate 5 2 14 Final pom xml文件
  • c++基本使用--构造基类

    构造基类 派生类构造函数的要点如下 1 创建派生类对象时 程序首先调用基类构造函数 然后再调用派生类构造函数 2 如果没以指定基类构造函数 将使用基类的默认构造函数 3 可以用初始化列表指明要使用的基类构造函数 4 基类构造函数负责初始化被
  • 【华为OD机试真题2023B卷 JAVA&JS】书籍叠放

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 书籍叠放 时间限制 1秒 内存限制 65536K 语言限制 不限 题目描述 书籍的长 宽都是整数对应 l w 如果书A的长宽度都比B长宽大时 则允许将B排列放在A上面 现在有一组规格的
  • python效率验证

    测试一段代码 知识点1 定义两个函数 分别是立方和平方 分别取看他们的运算结果 定义函数 一个放回0 n的平方 一个返回0 n的立方 1 创建 列表 然后append数据再返回 def square n data for x in rang
  • Java - 常用类库 - BigDecimal/BigInteger

    常用类库 BigDecimal BigInteger 用于处理任意精度的浮点数和任意长度的整数 一 BigDecimal类 BigDecimal Java SE 11 JDK 11 当处理的浮点数精度超出float乃至double的限制时