Java快速入门到精通—大数字运算(BigDecimal 类)

Java大数字运算(BigInteger类和BigDecimal类) 阅读详情

        在Java中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。这两个类用于高精度计算,其中BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。今天主要讲一下BigDecimal 类!

BigDecimal 类

        BigInteger 和 BigDecimal 都能实现大数字的运算,不同的是 BigDecimal 加入了小数的概念。一般的 float 和 double 类型数据只能用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到 BigDecimal 类。BigDecimal 类支持任何精度的浮点数,可以用来精确计算货币值。

BigDecimal 常用的构造方法如下。

  • BigDecimal(double val):实例化时将双精度型转换为 BigDecimal 类型。

  • BigDecimal(String val):实例化时将字符串形式转换为 BigDecimal 类型。

        BigDecimal 类的方法可以用来做超大浮点数的运算,像加、减、乘和除等。在所有运算中,除法运算是最复杂的,因为在除不尽的情况下,末位小数的处理方式是需要考虑的。

        下面列出了 BigDecimal 类用于实现加、减、乘和除运算的方法。

BigDecimal add(BigDecimal augend) // 加法操作

BigDecimal subtract(BigDecimal subtrahend) // 减法操作

BigDecimal multiply(BigDecimal multiplieand) // 乘法操作

BigDecimal divide(BigDecimal divisor,int scale,int roundingMode ) // 除法操作

        其中,divide() 方法的 3 个参数分别表示除数、商的小数点后的位数和近似值处理模式。

        下表列出了 roundingMode 参数支持的处理模式。

oundingMode参数支持的处理模式
模式名称说明
BigDecimal.ROUND_UP商的最后一位如果大于 0,则向前进位,正负数都如此
BigDecimal.ROUND_DOWN商的最后一位无论是什么数字都省略
BigDecimal.ROUND_CEILING商如果是正数,按照 ROUND_UP 模式处理;如果是负数,按照 ROUND_DOWN
模式处理
BigDecimal.ROUND_FLOOR与 ROUND_CELING 模式相反,商如果是正数,按照 ROUND_DOWN 模式处理;
如果是负数,按照 ROUND_UP 模式处理
BigDecimal.ROUND_HALF_ DOWN对商进行五舍六入操作。如果商最后一位小于等于 5,则做舍弃操作,否则对最后
一位进行进位操作
BigDecimal.ROUND_HALF_UP对商进行四舍五入操作。如果商最后一位小于 5,则做舍弃操作,否则对最后一位
进行进位操作
BigDecimal.ROUND_HALF_EVEN如果商的倒数第二位是奇数,则按照 ROUND_HALF_UP 处理;如果是偶数,则按
照 ROUND_HALF_DOWN 处理

例:

        编写一个 Java 程序,演示如何使用 BigDecimal 类提供的方法对数字执行运算,并输出结果。具体实现代码如下:

import java.math.BigDecimal;
import java.util.Scanner;

public class Test10 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个数字:");

        // 保存用户输入的数字
        double num = input.nextDouble();

        // 使用输入的数字创建BigDecimal对象
        BigDecimal bd = new BigDecimal(num);

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

        // 计算大数字减去-25.157904的结果
        System.out.println("减法操作结果:" + bd.subtract(new BigDecimal(-25.157904)));

        // 计算大数字乘以3.5的结果
        System.out.println("乘法操作结果:" + bd.multiply(new BigDecimal(3.5)));

        // 计算大数字除以3.14的结果,并保留小数后2位
        System.out.println("除法操作结果(保留 2 位小数):" + bd.divide(new BigDecimal(3.14), 2, BigDecimal.ROUND_CEILING));

        // 计算大数字除以3.14的结果,并保留小数后5位
        System.out.println("除法操作结果(保留 5 位小数):" + bd.divide(new BigDecimal(3.14), 5, BigDecimal.ROUND_CEILING));
    }
}

        上述代码将用户输入的数字保存到 num 变量中,然后调用“newBigDecimal(num)”方法来创建 BigDecimal 对象。接下来的代码演示了如何调用 BigDecimal 类提供的运算方法,运行效果如下所示。

请输入一个数字:
100
加法操作结果:199.15399999999999636202119290828704833984375
减法操作结果:125.157903999999998490011421381495893001556396484375
乘法操作结果:350.0
除法操作结果(保留 2 位小数):31.85
除法操作结果(保留 5 位小数):31.84714

推荐学习课程

Java基础:

Java300集,Java必备优质视频_手把手图解学习Java,让学习成为一种享受

Java项目:

【Java游戏项目】1小时教你用Java语言做经典扫雷游戏_手把手教你开发游戏

【Java毕业设计】OA办公系统项目实战_OA员工管理系统项目_java开发

Java BigInteger类、BigDecimal类 例如,当创建一个BigDecimal对象时,如果传入的字符串是"123.4567",那么在内部,BigDecimal会将其转换成一个整数数组,数组中的元素分别对应于'1','2','3','4','5','6','7'这些数字,并且记录下小数点后有四位数字。这个数组是按照从最低位到最高位的顺序存储的,即数组的第一个元素存储的是大整数的最低位,而最后一个元素存储的是大整数的最高位。需要注意的是,在使用BigDecimal时,需要注意其精度和舍入控制问题,以确保计算结果的准确性。的高1位为n-1)。 阅读详情

相关推荐

23、大数字运算(BigInteger、BigDecimal)和数据格式化(NumberFormat、DecimalFormat)

一 大数字运算 在Java中提供了大数字的操作类,即BigInteger与BigDecimal,这两个类用于高精度计算,其中BigInteger是针对大整数的处理类,而BigDecimal则是针对大小数的处理类 1.1 BigInteger BigInteger类型的数字范围较Integer类型的数字范围要大的多。BigInteger支持任意精度的整数,也就是说在运算中BigInteger类...

qq_33336347的博客 1324

java的大数字运算

java的大数字处理,主要介绍BigInteger与BigDecimal类的使用

黑虎阿福的博客 1382

【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示

本设计通过NE555与三极管的巧妙配合,仅用基础元件实现了呼吸灯效果。核心在于利用RC积分电路将PWM信号转换为控制电压,并通过负反馈动态调节占空比。Proteus仿真验证了方案的可行性,读者可进一步优化参数或扩展功能,探索更多硬件设计可能性。

2201_75797484的博客 2983

(JAVA)超大整数运算

package com.book.lite; import java.math.BigInteger; /** * @author zhangyu * @date 2021年08月21日 4:27 下午 * Biginterger类,超大数的四则运算 */ public class BigIntegerDemo { public static void main(String[] args) { methon_3(); } public static .

紫梦涵的博客 1016

在 SAP 里玩转 FTP:标准程序 RSFTP00x 全景解析与落地实践

摘要:SAP系统通过封装的标准FTP程序(RSFTP001-008)提供便捷的文件传输能力,适用于各类集成场景。关键点包括:1)依赖SAPFTP可执行程序和RFC目的地;2)使用RSFTP005进行前置检查并生成RFC配置;3)标准报表各司其职,如RSFTP002用于命令测试、RSFTP007/008提供参考实现;4)开发时组合FTP_CONNECT/COMMAND/DISCONNECT等函数模块。特别注意前台(SAPFTP)与后台(SAPFTPA)的环境差异,这是常见故障点。该方案通过标准化工具链显著降低

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 210

2024 年高教社杯全国大学生数学建模竞赛 E 题 交通流量管控 详细思路+matlab代码+python代码+论文范例

随着城市化进程的加快、机动车的快速普及,以及人们活动范围的不断扩大,城市道。景区周边道路上既有本地居民出行,也有过境车辆,化配置,在保证车辆通行的前提下,使得两条主路上的车流平均速度最大。对五一黄金周期间的数据进行分析,判定寻找停车位的巡游车辆,并估算假。相位通过的每辆车的信息,包括拍摄地点、行驶方向、拍摄时间和车牌号。济发展和百姓幸福感的一个“痛点”,是相关部门的棘手难题之一。纬中路交叉口,根据车流量的差异,可将一天分成若干个时段,估。是小镇中两条主路的情况:纬中路,从环西路到环东路,约。

YOLO 3310

Java大数字运算

Java大数字运算

m0_69505153的博客 903

红米K70至尊版修复“nv损坏”主板电阻图示 mtk芯片工程固件刷写与步骤说明

💝💝💝红米K70至尊版 机型代码:rothko,搭载天玑9300+旗舰芯片.后置5000万像素索尼IMX906高动态OIS主摄,800万像素超广角镜头,200万像素微距镜头,前置2000万像素摄像头,也适用于以下型号的小米机型:2407FPN8EG,2407FPN8ER,XIG06,A402XM,2407FRK8EC。 💝💝💝通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2💝💝💝-----此机型刷写工程固件预览界面 3💝💝💝------红米K

小马哥的专栏 1461

Java 大数字运算(BigInteger类和BigDecimal类)

文章目录BigInteger类BigDecimal 在 Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。这两个类用于高精度计算,其中 BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。 BigInteger类 BigInteger 类型的数字范围较 Integer 类型的数字范围要大得多。BigInteger 支持任意精度的整数,也就是说在运算中 BigInteger

shuyv的博客 920

7.6 GPU页表更新机制

本文分析了AMDGPU驱动中BO到VA映射的页表更新实现机制。核心流程通过amdgpu_vm_bo_update()函数触发,支持CPU直接写入和SDMA异步命令两种更新模式。系统根据VRAM可见性自动选择最优更新策略,处理三种主要场景:命令提交、BO迁移和BO销毁。关键实现包括DMA地址数组处理、权限标志合并和BO迁移状态转换,最终通过amdgpu_vm_update_range()完成硬件页表更新。该机制有效平衡了更新延迟与吞吐量,为GPU虚拟内存管理提供基础支撑。

图形/计算GPU的驱动与虚拟化技术分享园地 2472

如何通过 GitHub Actions 使用 SSH 自动化部署到阿里云 ECS 实例

通过 GitHub Actions 和 SSH 自动化部署,可以显著提高你的开发效率和部署的可靠性。本文介绍了如何生成 SSH 密钥、将公钥添加到阿里云 ECS 实例、将私钥添加到 GitHub Secrets,以及编写 GitHub Actions 工作流来实现自动化部署。希望这篇文章对你有所帮助!

吃面不喝汤的博客 1512

Java 大数字运算之 BigDecimal 类

在 Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。这两个类用于高精度计算,其中 BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。今天主要讲一下 BigDecimal 类。

m0_69632475的博客 601

ESD防护设计宝典(十九):元器件选型宝典——共模电感

然而,这位“大师”的脾气也颇为古怪,若设计者不解其性、用之不当,它非但不能抑制噪声,反而会引入信号完整性恶化、电源压降等新问题,甚至让您的系统EMC性能“雪上加霜”,导致项目在测试阶段功亏一篑。本文将带您深入共模电感的内在世界,从本质解析到参数详解,从设计陷阱到实战选型,全方位领悟其平衡艺术,掌握其应用核心,规避那些足以让项目翻车的致命陷阱。:这是存在于电路板内部的“家贼”。共模电感实质上是一个四端器件,它通过磁场的“加法”与“减法”运算,巧妙地实现了对共模噪声的抑制,同时为差模信号大开绿灯。

m0_56451176的博客 422

4、大数字运算(BigInteger类和BigDecimal类)

在 Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。这两个类用于高精度计算,其中 BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。 BigInteger 类 如果要存储比 Integer 更大的数字,Integer 数据类型就无能为力了。因此,Java 中提供 BigInteger 类来处理更大的数字。 BigInteger 类型的数字范围较 Integer 类型的数字

you can you up up up的博客 883

【Unity3D开发小游戏】《打地鼠游戏》Unity开发教程

文章目录一、前言二、源码三、正文版本1、相机设置2、洞口设置3、洞口脚本4、鼹鼠5、鼹鼠动画6、鼹鼠碰撞器7、鼹鼠脚本8、击中鼹鼠的效果9、实现击中效果10、增加更多的洞口 一、前言 让我们使用Unity3D开发一个打地鼠游戏吧。 打地鼠游戏是一个非常有趣的街机游戏,是在1976年左右发明的。 游戏的主要玩法就是打击从洞里出来的鼹鼠,玩家击中鼹鼠的速度越快,得分就越高 我们将讲解制作游戏的所需的每...

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 8461

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

初识Java(Java数字处理类-大数字运算)

一、大数字运算    在 Java 中提供了大数字的操作类,即 java.math.BigInteger 类与  java.math.BigDecimal 类。这两个类用于高精度计算,体重 BigInteger 类是针对大整数的处理类,而  BigDecimal  类则是针对大小数的处理类。    1.1   BigInteger     BigInteger  类型的数字范围较 Integer ...

jsl-空零之旅 8002

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

bigdecimal运算_初识Java(Java数字处理类-大数字运算)

一、大数字运算 在 Java 中提供了大数字的操作类,即 java.math.BigInteger 类与 java.math.BigDecimal 类。这两个类用于高精度计算,体重 BigInteger 类是针对大整数的处理类,而 BigDecimal 类则是针对大小数的处理类。 1.1 BigInteger BigInteger 类型的数字范围较 Integer 类型...

weixin_39631094的博客 448

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java-数字处理类

Java-数字处理类

真正的大师永远怀着一颗学徒的心 1938

Java 大数字类BigDecimal类

BigInteger类和BigDecimal类都可以实现大数字的运算,不同的是BigDecimal加入小数计算,BigInteger类通常用来进行工程和科学计算,但是如果要进行商业的计算(股票等涉及金额精度的计算)我们就要用到BigDecimal类,BigDecimal类可以实现任意精度小数的计算,也就是说可以计算出小数点后任意一位的数字。 1、构造方法: BigDecimal d = new BigDecimal("3.14"); BigDecimal d = new BigDecimal(3.14);

单枪匹码 780

高精度数学运算的java类BigDecimal

是 Java 中用于高精度数学运算的类,能够处理非常大的数字,并且提供了精确的小数运算。使用字符串构造可以避免浮动误差问题,因为浮动数字在浮点数表示中会有精度损失。本身是浮动类型,可能不精确。建议使用字符串构造方法来避免精度损失。包中,通常用于需要精确计算(如金融计算)或防止浮动误差的场景。提供了多种构造方法,通常通过传入字符串或数值来创建一个。支持任意精度,因此可以进行非常高精度的数学运算。例如,进行除法时,如果结果有多余的小数位数,使用。如果你需要使用大整数,可以从。可能会导致精度丢失,因为。

lixin5456985的博客 1189

【Java学习日记】#13数字处理类 数字格式化 DecimalFormat类 格式化模板 数字运算 Math类 随机数 大数字运算

数字处理类数字格式化DecimalFormat类(十进制数字格式化类)构造方法格式化模板使用数字运算Math类常数值常用数学运算方法 数字格式化 Java中没有格式化的数据遵循以下原则: 如果数据绝对值大于0.001并且小于10000000,使以常规小数形式表示。 如果数据绝对值小于0.001或者大于10000000,使用科学计数法表示。 DecimalFormat类(十进制数字格式化类) DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字。它可以将一些数字格式化位

BAOZEE的博客 829
上一篇: Java快速入门到精通—大数字运算(BigInteger类)
下一篇: Java适合初学者的编写软件分享
程序媛_小白
博客等级 码龄5年 322粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值