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-06-12:在N*N的正方形棋盘中,有N*N个棋子,那么每个格子正好可以拥有一个棋子。 但是现在有些棋子聚集到一个格子上了,比如: 2 0 3 0 1 0 3 0 0 如上的二维数组代表,一
2022-06-12:在NN的正方形棋盘中,有NN个棋子,那么每个格子正好可以拥有一个棋子. 但是现在有些棋子聚集到一个格子上了,比如: 2 0 3 0 1 0 3 0 0 如上的二维数组代表,一共3 ...
- 2021-03-20:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的子矩形数量。
2021-03-20:给定一个二维数组matrix,其中的值不是0就是1,返回全部由1组成的子矩形数量. 福大大 答案2021-03-20: 按行遍历二维数组,构造直方图. 单调栈,大压小.有代码. ...
- 2022-03-18:arr数组长度为n, magic数组长度为m 比如 arr = { 3, 1, 4, 5, 7 },如果完全不改变arr中的值, 那么收益就是累加和 = 3 + 1 + 4 +
2022-03-18:arr数组长度为n, magic数组长度为m 比如 arr = { 3, 1, 4, 5, 7 },如果完全不改变arr中的值, 那么收益就是累加和 = 3 + 1 + 4 + ...
- 用BP软件 批量注册用户
第五步:查看管理员后台----用户界面, 有没有批量添加进用户
- 代码随想录算法训练营Day17二叉树|110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和
优先掌握递归 110.平衡二叉树 题目链接:110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树_每个节点_ 的左右两个子树的高度差的绝对 ...
- \n被当成回车处理
Regex.Escape C# 字符串变量str 的值为"a\nb"如果直接输出显示的话,就成了:ab需要输出显示为:a\nb string str = "a\nb& ...
- STL-stack(ACM)
1.没有.clear()操作,需要手动pop() 重构函数(默认) stack<int> a; 基础操作 a.push() // 入栈 a.pop() // 弹出栈顶元素 a.empty( ...
- 【HMS Core】Health Kit健康数据采样, 原子采样数据问题
[问题描述] 1.体脂数据中的肌肉量和水份量是如何获得的,都有些什么?体脂数据中的体重,体脂是用户自己上传的,然后通过计算公式得到数据吗 2.日常活动统计数据包含什么内容,怎么获取这些数据? 3. 锻 ...
- 【TVM模型编译】2. relay算子构造.md
从TVM的官方Tutorial里面,介绍了如何新增自定义算子.(这是我翻译的) 之前的文章讲到了onnx 算子转换到Relay IR的过程 下面以Conv2d算子介绍,编译过程中 Relay IR是如 ...
- Dash应用页面整体布局技巧
本文示例代码已上传至我的Github仓库:https://github.com/CNFeffery/dash-master 大家好我是费老师,对于刚上手dash应用开发的新手朋友来说,如何进行合理且美 ...