Java BigDecimal 分析
1.使用理由:
- Double类和Float类可以对16位有效数字的数进行精确运算,但对于超过16位有效数字的数,会丢失精度。所以使用BigDecimal类来精确计算超过16位有效数字的数。
2.引入包:
- import java.math.BigDecimal;
3.构造方法:
- BigDecimal(E):创建一个具有参数所指定类型的对象
- 使用样例:
Scanner sc=new Scanner(System.in);
BigDecimal b= new BigDecimal(0.1);
BigDecimal c= new BigDecimal("0.1");
BigDecimal a=sc.nextBigDecimal();
System.out.println("输入值位:"+a);
System.out.println("用浮点型创建:"+b);
System.out.println("字符串类型创建:"+c); - 结果分析:输入值创建具有可预知性,但双精度浮点型创建具有一定的不可预知性。用String创建的值是准确的。
输入值位:0.1
用浮点型创建:0.1000000000000000055511151231257827021181583404541015625
字符串类型创建:0.1
4.常用方法:
加法:add(BigDecimal)
减法:subtract(BigDecimal) 返回值:BigDecimal
乘法:multiply(BigDecimal) 返回值:BigDecimal
除法:divide(BigDecimal) 返回值:BigDecimal
转换:toString(),intValue(),floatValue()
- 比较:campareTo(BigDecimal) 返回值:1 表示 >,0 表示 =,-1 表示 <
5.易错提示:
除法的异常提醒:Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
示例代码:
public static void main(String []args){
Scanner sc=new Scanner(System.in);
BigDecimal b= new BigDecimal(1);
BigDecimal c= new BigDecimal("0.1");
BigDecimal a= new BigDecimal(3);
System.out.println(b.divide(a));
}解决方法:设置精确小数位。
BigDecimal java.math.BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
BigDecimal:表示被除数
divisor:表示除数
scale:表示精确位数
roundingMode:表示舍入模式
java提供的模式:
四舍五入:Bigdecimal.ROUND_HALF_UP
五舍六入:Bigdecimal.ROUND_HALF_DOWN
向上取整:Bigdecimal.ROUND_CEILING
向下取整:Bigdecimal.ROUND_FLOOR
等.....示例代码:
public static void main(String []args){
Scanner sc=new Scanner(System.in);BigDecimal b= new BigDecimal(1);BigDecimal c= new BigDecimal("0.1");BigDecimal a= new BigDecimal(3);System.out.println(b.divide(a,2,BigDecimal.ROUND_CEILING));}
Java BigDecimal 分析的更多相关文章
- java bigDecimal and double
Java BigDecimal和double BigDecimal是Java中用来表示任意精确浮点数运算的类,在BigDecimal中,使用unscaledValue × 10-scale来表示一 ...
- Java 性能分析工具 , 第 3 部分: Java Mission Control
引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...
- Java 性能分析工具 , 第 2 部分:Java 内置监控工具
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...
- 浅谈java性能分析
浅谈java性能分析,效能分析 在老师强烈的要求下做了效能分析,对上次写过的词频统计的程序进行分析以及改进. 对于效能分析:我个人很浅显的认为就是程序的运行效率,代码的执行效率等等. java做性能测 ...
- TDA - Thread Dump Analyzer (Java线程分析工具)
TDA - Thread Dump Analyzer (Java线程分析工具)http://automationqa.com/forum.php?mod=viewthread&tid=2351 ...
- JAVA 可视化分析工具 第12节
JAVA 可视化分析工具 第12节 经过前几章对堆内存以及垃圾收集机制的学习,相信小伙伴们已经建立了一套比较完整的理论体系!那么这章我们就根据已有的理论知识,通过可视化工具来实践一番. 我们今天要讲 ...
- Java 反射 分析类和对象
Java 反射 分析类和对象 @author ixenos 摘要:优化程序启动策略.在运行时使用反射分析类的结构和对象 优化程序启动策略 在启动时,包含main方法的类被加载.它会加载所有它需要的类. ...
- 深入理解JVM(八)——java堆分析
上一节介绍了针对JVM的监控工具,包括JPS可以查看当前所有的java进程,jstack查看线程栈可以帮助你分析是否有死锁等情况,jmap可以导出java堆文件在MAT工具上进行分析等等.这些工具都非 ...
- Java集合分析
Java集合分析 前言 从开始接触Java的时候, 就在强调的一个重要版块, 集合. 终于能够开始对它的源码进行分析, 理解, 如果不懂得背后的思想, 那么读懂代码, 也仅仅是读懂了 if else ...
- JVM学习--(八)java堆分析
上一节介绍了针对JVM的监控工具,包括JPS可以查看当前所有的java进程,jstack查看线程栈可以帮助你分析是否有死锁等情况,jmap可以导出java堆文件在MAT工具上进行分析等等.这些工具都非 ...
随机推荐
- 2022-11-14:rust语言,请使用过程宏给结构体AAA生成结构体AAABuilder和创建AAABuilder实例的方法。 宏使用如下: #[derive(Builder)] pub stru
2022-11-14:rust语言,请使用过程宏给结构体AAA生成结构体AAABuilder和创建AAABuilder实例的方法. 宏使用如下: #[derive(Builder)] pub stru ...
- 2022-09-05:作为国王的统治者,你有一支巫师军队听你指挥。 :给你一个下标从 0 开始的整数数组 strength , 其中 strength[i] 表示第 i 位巫师的力量值。 对于连续的一
2022-09-05:作为国王的统治者,你有一支巫师军队听你指挥. :给你一个下标从 0 开始的整数数组 strength , 其中 strength[i] 表示第 i 位巫师的力量值. 对于连续的一 ...
- 2020-12-04:mysql 表中允许有多少个 TRIGGERS?
福哥答案2020-12-04: 在 Mysql 表中允许有六个触发器,如下:BEFORE INSERTAFTER INSERTBEFORE UPDATEAFTER UPDATEBEFORE DELET ...
- Vue根据时间戳制作倒计时15分钟
废话不多说直接上代码 <script> export default { data() { return { downTimeShow: true, timer: null, downTi ...
- Luogu1772 [ZJOI2006] 物流运输
传送门 简化题意 给你 \(m\) 个码头,码头之间有双向边连接,\(n\) 天,其中一些码头在某些天会不可用,这 \(n\) 天都要有一条从 \(1\) 到 \(m\) 的路,每一次更换道路会需要 ...
- React笔记-Hooks(九)(非常全面)
React笔记-Hooks(九) Hooks 概念 React Hooks 的意思是 组件尽量写成纯函数 如果需要外部功能和副作用 就用钩子把外部代码"钩"进来 函数组件和类组件区 ...
- 你还在用Object.equals()方法吗?
前言 当<阿里巴巴Java开发手册>发布后,我也是仔细进行了阅读,想从中找出一些"标准",让自己的代码质量提高.手册中对 Object 的 equals 方法的使用进行 ...
- jvm中类和对象定义存储基础知识
1 类文件数据结构类型 Class文件结构主要有两种数据结构:无符号数和表 •无符号数:用来表述数字,索引引用.数量值以及字符串等,比如 图1中类型为u1,u2,u4,u8分别代表1个字节,2个字节, ...
- 疑难杂记:Chirp信号相关的参数解释
图1 FMCW雷达信号参数 在德州仪器TI毫米波雷达中,开发板参数配置往往涉及如图1所示的信号参数. 宏观上看,信号参数包括\(ADC\)采样时间.脉冲重复周期(\(Chirp\)扫频周期)和帧时间( ...
- OpenAI发布ChatGPT函数调用和API更新
2023年6月13日,OpenAI针对开发者调用的API做了重大更新,包括更易操控的 API模型.函数调用功能.更长的上下文和更低的价格. 在今年早些时候发布gpt-3.5-turbo,gpt-4在短 ...