好程序员Java培训分享BigDecimal的用法,如果对数值结果精度要求很高,那么就可以使用BigDecimal,BigDecimal可以精准的控制小数点后面的数字

Java培训

  1. 实例 BigDecimal 对象

  通常会使用 String 和 int 构造方法实例出 BigDecimal 对象,即

  new BigDecimal(String val);

  new BigDecimal(int val);

  如参数为 double 类型,得先转换成 String 类型再入参

  new BigDecimal(Double.toString(123.123));

  2. BigDecimal 加减乘除

  加减乘除都是用 BigDecimal 对象点(.)加减乘除方法入参 BigDecimal 对象,返回的也是 BigDecimal 对象

  加:BigDecimal add = new BigDecimal("123.123").add(new BigDecimal("123.123")); ---> 246.246

  减:BigDecimal subtract = new BigDecimal("123.123").subtract(new BigDecimal("123.123")); ---> 0.000

  乘:BigDecimal multiply = new BigDecimal("123.123").multiply(new BigDecimal("123.123")); ---> 15159.273129

  除:BigDecimal divide = new BigDecimal("123.123").divide(new BigDecimal("123.123")); ---> 1

  注:其中除法一般不会这样直接除,在不能整除的情况下,这样运行程序是会报错的,所以一般除法会使用下面这个重载方法

  new BigDecimal("10").divide("40",1,ROUND_HALF_UP); ---> 0.3

  正常计算 10/40 结果为 0.25, 在这里是计算 十除以四十,保留一位小数,四舍五入模式。所以得到的结果为 0.3

  最常用的模式:

  ① ROUND_HALF_UP:四舍五入

  ② ROUND_HALF_DOWN:向下取舍(去掉保留小数位后面的小数)

  3. Scale 属性操作

  ① 获取小数的位数:new BigDecimal("123.123").scale() ---> 3

  ② setScale() 方法保留几位小数

  - setScale(int NewScale):(注:入参的数字只能大于等于小数的位数,括号中只能入参大于等于 3 的数)

  例: new BigDecimal("123.123").setScale(3) ---> 123.123

  new BigDecimal("123.123").setScale(5) ---> 123.12300

  - setScale(int newScale, RoundingMode roundingMode):

  例:new BigDecimal("123.123").setScale(2,RoundingMode.HALF_UP) ---> 123.12

  new BigDecimal("123.125").setScale(2,RoundingMode.HALF_UP) ---> 123.13

  new BigDecimal("123.123").setScale(2,RoundingMode.HALF_DOWN) ---> 123.12

  new BigDecimal("123.125").setScale(2,RoundingMode.HALF_DOWN) ---> 123.12

  4. compareTo 比较大小

  等于:new BigDecimal("123.123").compareTo(new BigDecimal("123.123"))==0 ---> true

  new BigDecimal("123.123").compareTo(new BigDecimal("123.123")) ---> 0

  如果 compareTo 的结果为 0 的话,就证明两个对象相等(当左边不等于右边时,第一个表达式则为 false)

  小于:new BigDecimal("123.122").compareTo(new BigDecimal("123.123")) < 0 ---> true

  new BigDecimal("123.122").compareTo(new BigDecimal("123.123")) ---> -1

  如果 compareTo 的结果为 -1 的话,就证明左边小于右边(当左边大于等于右边时,第一个表达式则为 false)

  大于:new BigDecimal("123.124").compareTo(new BigDecimal("123.123")) > 0 ---> true

  new BigDecimal("123.124").compareTo(new BigDecimal("123.123")) ---> 1

  如果 compareTo 的结果为 1 的话,就证明左边大于右边(当左边小于等于右边时,第一个表达式则为 false)

bigdecimal 等于0_好程序员Java培训分享BigDecimal的用法相关推荐

  1. 好程序员Java培训分享20个Java程序员基础题

    好程序员Java培训分享20个Java程序员基础题1.谈谈final.finally.finalize的区别 final用于声明属性,方法和类,分别标识属性不可变,方法不可覆盖,类不可继承. fina ...

  2. java 保留html_好程序员Java培训分享Java包是什么?

    好程序员Java培训分享Java包是什么?在Java中的包是一种封装一组类.子包和接口的机制,可用于组织一组相关的类和接口.从概念上讲,我们可以将包视为类似与计算机上的不同文件夹:可以将HTML页面保 ...

  3. 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法

    好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...

  4. 好程序员Java培训分享如何快速入门Java编程

    好程序员Java培训分享如何快速入门Java编程,作为老牌编程语言,Java拥有广阔的市场应用,企业对Java人才的需求一直居高不下.有很多非专业.零基础的人想要学习Java却不知道怎么快速入门,接下 ...

  5. 好程序员Java培训分享Java初学者必读

    好程序员Java培训分享Java初学者必读,近年来各种各样的编程语言不断崛起,但唯有Java是牢牢占据着老大的位置,目前几乎90%以上的大中型互联网应用系统在服务器端开发首选Java.因此,也是吸引了 ...

  6. java中forward和redirect_好程序员Java教程分享:Forward和Redirect的区别

    Java教程分享:Forward和Redirect的区别,用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉 ...

  7. 好程序员Java教程分享JavaScript面试问题及答案(一)

    好程序员Java教程分享JavaScript面试问题及答案(一) 1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个 ...

  8. visual foxpro 程序员指南_好程序员云计算培训分享云计算中SOA是什么?

    好程序员云计算培训分享云计算中SOA是什么?云计算中SOA是什么?SOA 是面向服务的架构,即企业的 IT 系统是由服务组成的,也即企业的各个应用系统是由许多标准的服务件"组装"起 ...

  9. 好程序员云计算培训分享云计算大纲抢先看

    好程序员云计算培训分享云计算大纲抢先看,当下,云计算产业高速发展,云计算可以实现信息资源的集中管理.按需供给."管家式"贴身服务和共享共创.在技术层面,互联网将为整个信息处理.资源 ...

最新文章

  1. 企业号、订阅号、服务号的一此区别
  2. 用 Flask 来写个轻博客 (34) — 使用 Flask-RESTful 来构建 RESTful API 之三
  3. Passwordless SSH Login
  4. python 读取文件_python读取docx文件,就是如此简单
  5. 小学音乐教学和计算机的融合,小学学科教学与计算机深度融合赛课心得体会(共4篇)...
  6. Office编程中得到extend对象
  7. echarts3D环形图(包含点击效果)
  8. SQL Server无法安装问题
  9. w25q64 linux,我用W25Q16的读写函数测试w25Q64怎么总是失败?需要改动什么吗?
  10. 反垄断重锤字节跳动,投资业务原地熄火 腾讯阿里争做“普通公司”
  11. OFN鼠标驱动(三) -- I2C驱动的移植(2)
  12. 【网络安全必看】如何提升自身WEB渗透能力?
  13. 为什么说信息是负熵?
  14. 解析范式(1NF-4NF)
  15. 谈谈区块链的常用架构
  16. css3上箭头怎么写,CSS3箭头
  17. CUDA基础(一):CPU体系架构概述
  18. JS基础-特效篇-随机点名册
  19. 【linux】-find、rm、kill等常用命令
  20. 解析几何:第二章 解析几何中的基本计算公式

热门文章

  1. linux解决windows应用程序,关于Linux下使用Windows应用程序的尝试总结
  2. linux阿帕奇日志文件,Linux下apache日志文件设置
  3. chm转pdf_简历是以PDF还是Word格式提交的?
  4. tarjan对有向图的缩点(求强连通分量)
  5. 揭秘下一代云数据库引擎MyBasefor PostgreSQL
  6. Spring启动慢?提速利器SpringFu来了
  7. troubleshoot之:用control+break解决线程死锁问题
  8. android 图片变颜色代码,Android -对图片Drawable进行变色
  9. 4条实用小建议,送给初入NLP领域的你
  10. 从零点五开始用Unity做半个2D战棋小游戏(二)