BigDecimal类及用法注意点

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

一、BigDecimal类的作用:

 

BigDecimal 类是针对大小数处理的类。在商业计算中,对数字精度要求较高,必须使用 BigInteger 类和 BigDecimal 类,它支持任何精度的定点数,可以用它来精确计算货币值。

二、BigDecimal类最常用的传参方式:

//构造方法参数是字符串(推荐方式)
BigDecimal b1 = new BigDecimal("1.03");
System.out.println(b1);

//第二种传参方法
BigDecimal b2 = BigDecimal.valueOf(1.03);//不用new对象了
System.out.println(b2);

第一种参数是String s,第二种参数是double a

多种构造方法是好处可以不用再new对象,可以直接传入参数。

三、BigDecimal类最常用的方法:

        BigDecimal b1 = new BigDecimal("10");
        BigDecimal b2 = new BigDecimal("2");

        //相加
        BigDecimal result = b1.add(b2);//b1+b2=12
        System.out.println(result);

        //相减
        System.out.println(b1.subtract(b2));//b1-b2=8

        //相乘
        System.out.println(b1.multiply(b2));//b1*b2=20

        //如果不能整除,要用重载方法
        //divide(除数,保留的小数位,进行舍入的方法)
        System.out.println(b1.divide(b2,2, RoundingMode.HALF_UP));//这里是2是保留的小数位

输出效果:

这里说一下RoundingMode这个类,它是一个枚举类,有以下几个值:

HALF_UP,UP,DOWN,CEILING,FLOOR,HALF_DOWN,HALF_EVEN,UNNECESSARY

 这里用到的是HALF_UP(Half指的中点值,例如0.5、0.05,0.15等等)

定义:向最接近的数字方向舍入,如果与两个相邻数字的距离相等,则向上舍入。(舍入模式也就是通常说的四舍五入)

编程题【BigDecimal类】

有以下double数组:

double[] arr = {0.1,0.2,2.1,3.2,5.56,7.21};

需求:请编程计算它们的总值及平均值(四舍五入保留小数点后2位)。

        double[] arr1 = {0.1, 0.2, 2.1, 3.2, 5.56, 7.21};
        //先定义一个double类型的变量
        double sum = 0;
        for (int i = 0; i < arr1.length; i++) {
            sum += arr1[i];  //遍历数组获取数组和
        }

        BigDecimal bigSum = new BigDecimal(sum+"");
        BigDecimal length = new BigDecimal(arr1.length + "");
        BigDecimal avg = bigSum.divide(length, 2, RoundingMode.HALF_UP);
        System.out.println("bigSum = " + bigSum);
        System.out.println("length = " + length);
        System.out.println("avg = " + avg);

输出效果:

decimal.js:JavaScript的任意精度十进制类型 JavaScript的任意精度的十进制类型。 产品特点 整数和浮点数 简单但功能齐全的API 复制JavaScript的Number.prototype和Math对象的许多方法 还处理十六进制,二进制和八进制值 比Java的BigDecimalJavaScript版本更快,更小,甚至更容易使用 没有依赖关系 广泛的平台兼容性:仅使用JavaScript 1.5(ECMAScript 3)功能 全面的和测试集 包括一个TypeScript声明文件: decimal.d.ts 该库类似于 ,但是此处的精度是根据有效数字而不是小数位指定的,并且所有计算均舍入为精度(类似于Python的十进制模块),而不仅仅是舍入在内。 该库还添加了三角函数等,并支持非整数幂,这使其比bignumber.js和甚至更小的。 对于没有三角函数的该库的较浅版本,请参见 。 加载 该库是单个JavaScript文件decimal.js或ES模块decimal.mjs 。 浏览器: < script src =' path/to/decimal.js ' > </ script > < script t 立即下载

相关推荐

【ELF2学习板】基于OpenMP与RK3588多核架构优化FFTW的并行计算效率

本文详细介绍了如何在ELF2学习板上利用OpenMP与RK3588多核架构优化FFTW的并行计算效率。通过编译支持OpenMP的FFTW库、合理设置线程绑定与调度策略,以及内存访问优化等技巧,显著提升了FFT计算的性能。实测数据显示,多核并行优化可使4096点FFT计算速度提升一倍以上,特别适合信号处理、图像分析等高性能计算场景。

weixin_30352645的博客 604

javascript(js)中使用BigDecimal

了解了java中使用BigDecimal之后改在javascript上使用BigDecimal javascript上使用BigDecimal 与java中使用还是有很大区别的 定义BigDecimal类型 var x = new BigDecimal(); 此时的 x相当于一个空的BigDecimal类型的数据 将数据改为BigDecimal类型 如修改 var x = 1; 相当于将x的值重新定义在赋值给x x = new BigDecimal(""+x); 多加注意 new BigDecim

xiaojiakun的博客 1万+

30秒精准解析论文PDF:PyMuPDF4LLM+Qwen2本地Agent实战指南

PDF文献解析是科研信息处理的基础能力,其本质是将非结构化文档转化为可计算的语义结构。传统OCR方案在原生PDF(如LaTeX导出)上精度低、容错差;而基于PDF对象树的解析技术,能精准定位文本、公式、图表锚点与参考文献区块,为后续结构化提取提供高质量输入。结合轻量级领域微调模型(如Qwen2-1.5B-Instruct)与强约束提示词工程,可实现研究目标、方法框架、核心结果等五大要素的高保真蒸馏。该技术路径兼顾隐私安全、零成本复现与离线鲁棒性,特别适用于高校实验室、研究生课题组及AI初学者构建个人文献处理

weixin_33509203的博客 282

js BigDecimal

js BigDecimal

xxzblog的专栏 1万+

STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)

STM8S全解析之系列文章4—STM8S芯片项目升级引导程序(使用中断接收升级数据) 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)前言一、Flash划分boot和App二、使用步骤1.引入库2.读入数据总结 前言 用过STM8S都知道它没有中断向量重定向,也就意味着STM8S的中断向量没办法指向其他的位置,间接说明升级的引导

weixin_39853312的博客 1030

AWS S3文件上传性能优化:Java SDK多线程与分段上传实战指南

本文详细介绍了如何通过Java SDK优化AWS S3文件上传性能,重点讲解多线程并发上传与分段上传(Multipart Upload)技术的实战应用。通过动态调整分段策略、线程池配置及内存优化技巧,可显著提升大文件上传效率,实测显示组合方案比单线程上传提速近5倍。文章还涵盖加密上传、断点续传等高级场景解决方案,并提供了完整的性能对比测试数据。

d6e7f8的博客 1016

javascript的精确计算BigDecimal

第二个参数接收取整方式,setScale(2, bigdecimal.BigDecimal.ROUND_DOWN)表示保留两位小数,向下取整。ROUND_HALF_UP四舍五入;5-1+4*3/2 在实际计算中得到的结果是10,但在上面代码中的执行结果为12.00。bigdecimal允许链式操作,但只会顺序执行,不会按照计算规则先算乘除后算加减。第一个参数接收需要保留的位数,setScale(2)表示保留两位小数。在处理数据时尽量使用第二种方法定义,防止在后续计算过程中出现问题。

weixin_43962020的博客 3127

ArcGIS Maps SDK for Unity实战:把真实世界地形‘搬进’游戏场景的保姆级教程

本文详细介绍了如何使用ArcGIS Maps SDK for Unity将真实世界地形导入游戏场景的完整流程。从高程数据获取、TPKX格式转换到Unity中的地形集成与优化,提供了保姆级教程,帮助开发者快速实现高精度地形建模,特别适用于开放世界游戏和数字孪生项目。

weixin_30621465的博客 345

BigDecimal使用总结

BigDecimal使用

chali1314的博客 713

Trae AI开发工具:大前端环境配置与避坑指南

大前端开发的第一步往往不是选框架,而是搭建一套可靠的工具链。IDE作为编码、调试与AI能力协同的载体,直接决定后续开发的顺畅度。传统编辑器需要手动拼装插件生态,而新一代AI开发工具将对话、代码生成与项目脚手架能力内置到编辑器底层,降低了环境准备的门槛。Trae基于VS Code内核,兼容其插件体系,同时提供Chat、Builder、内联对话三种AI交互模式,适合从VS Code迁移的开发者,也适合大前端新人快速上手。安装时需认准官方渠道,注意Node.js、Git版本联动,配置自动格式化与手动更新策略,并结

weixin_26833139的博客 279

滑模控制实战:用Python从零实现SMC算法(附完整代码)

本文通过Python实战,从零详解滑模控制(SMC)算法的核心原理与代码实现。文章聚焦于一阶系统,使用NumPy和Matplotlib逐步构建控制器,并针对SMC固有的抖振问题,详细讲解了边界层法的原理与实现,提供了完整的代码和参数调优指南,帮助读者直观理解并掌握这一鲁棒性极强的非线性控制方法。

weixin_29285605的博客 465

bigdecimal除法不四舍五入_bigdecimal.divide除法运算用法详解与注意事项

一、bigdecimal精度计算类介绍bigdecimal是java api中提供的一个用于精度计算的一个类,很多情况下,我们的Java项目中在做购买支付或者是价格计算时由于JavaSE中提供的四类八种数据类型或多或少的都会有精度损失,在对金钱计算方面极不安全,因此绝大多数情况下会用到bigdecimal类做精度方面的计算,从而保证数据或者是数字的绝对精确与安全。今天的主角就是divide方法,该...

weixin_39593519的博客 5436

2022年全国职业院校技能大赛 高职组大数据技术与应用卷⑦——解析答案

大数据时代,电商经营模式发生很大改变。在传统运营模式中,缺乏数据积累,人们在做出一些决策行为过程中,更多是凭借个人经验和直觉,发展路径比较自我封闭。而大数据时代,为人们提供一种全新的思路,通过大量的数据分析得出的结果将更加现实和准确。商家可以对客户的消费行为信息数据进行收集和整理,比如消费者购买产品的花费、选择产品的渠道、偏好产品的类型、产品回购周期、购买产品的目的、消费者家庭背景、工作和生活环境、个人消费观和价值观等。通过数据追踪,知道顾客从哪儿来,是看了某网站投放的广告还是通过朋友推荐链接,是新访客还是

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 470

线上慎用 BigDecimal ,别被开出了

点击关注公众号:互联网架构师,后台回复2T获取2TB学习资源!上一篇:2T架构师学习资料干货分享一、BigDecimal概述Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直...

emprere的博客 98

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

BigDecimal用法和注意点

<br />不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。<br />可以处理任意长度的浮点数运算。<br />BigDecimal add(BigDecimal val) //BigDecimal 加法<br />B

BBG_0622的专栏 6181

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java中BigDecimal类用法介绍及易错点规避

Java中BigDecimal类用法介绍及易错点规避

吴名氏的博客 11万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java bigdecimal赋值_Java中BigDecimal类介绍及用法

Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算.其中 BigInteger 类是针对大整数的处理类,而 BigDecimal 类则是针对大小数的处理类.BigDecimal 类的实现用到了 BigInteger类,不同的是 BigDecimal 加入了小数的概念.float和Dou...

weixin_39911998的博客 1万+

BigDecimal常见用法、示例及注意事项

《BigDecimal 使用指南》摘要:本文详细介绍了 Java 中 BigDecimal 的正确使用方法。重点包括:1)推荐使用字符串构造而非 double 构造以避免精度丢失;2)必须为除法运算指定舍入模式;3)比较时应使用 compareTo 而非 equals;4)注意格式化输出和科学计数法处理。文章还指出了常见陷阱,如不可变性导致的运算问题,并提供了安全转换、精确比较等实用工具方法。最后给出了性能优化建议,如重用预定义常量和批量运算优化。掌握这些技巧可确保财务计算等高精度运算的准确性。(149字)

weixin_49185331的博客 1099

Java BigDecimal类型的使用和注意点

在金融相关的项目中,BigDecimal类被广泛用于精确的数值、金额的计算。记录如何使用以及在使用BigDecimal的过程中,存在的要注意的几个坑。

qq_40623672的博客 1108

java BigDecimal 遇到的坑 BigDecimal 注意点事项 BigDecimal 比较大小

java BigDecimal 遇到的坑 BigDecimal 注意点事项 BigDecimal 比较大小 一、遇到问题 在使用 java.math包的 BigDecimal类进行高精确度运算时,发现在使用构造方法 new BigDecimal 和 BigDecimal.valueOf 方法创建的 BigDecimal对象,居然不相等的情况,此处容易暗生bug,且难以发现,故记...

HaHa_Sir的博客 3558

BigDecimal用法大全及注意事项

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。 关于bigDecimal中坑还真的蛮多了,下面我也只能列举一些,后面发现会持续更新! 加减乘除: BigDecimal a = new BigDecimal("10"); BigDecimal b = new BigDecimal("5"...

男人要霸气的博客 1588

Java中使用BigDecimal注意点

DigDecimal使用注意点

weixin_43999182的博客 943

BigDecimal使用注意点

为什么要使用BigDecimal 浮点数没有办法是用二进制进行精确表示,所以进行计算的时候某些情况会出现精度丢失的问题。 精度丢失示例 public class BigDecimalTest { public static void main(String[] args) { System.out.println(0.05 + 0.01); System.o...

hzw138144的博客 734

BigDecimal类的基本用法

一、BigDecimal概述 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。 一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则...

Alan_ran的博客 765

Java类:BigDecimal 的用法:乘法

操作方法乘法multiply()设置精度推荐舍入方式(四舍五入)

Napster的专栏 881

java bigdecimal赋值_Java中BigDecimal类介绍及用法(亲测)

Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是针对大整数的处理类,而 BigDecimal 类则是针对大小数的处理类. BigDecimal 类的实现用到了 BigInteger类,不同的是 BigDecimal 加入了小数的概念. float和Double只能用来做科学计算或者是工程计算;在商业计算中,对数字精度要求较高,必须使用 BigInteg

gb4215287的博客 3234
上一篇: Java包装类
下一篇: Java随笔之Runnable和Thread的区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值