技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152

之前项目都很少用这个BigDecimal啊,最近这个项目对精度要求高,一个电视购物,广告拍摄,排挡等功能的项目,对BigDecimal 大量使用...

2019/05/13 追加: 小数位操作:

BigDecimal.setScale()方法用于格式化小数点 
setScale(1)表示保留一位小数,默认用四舍五入方式 
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4

setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍

setScaler(1,BigDecimal.ROUND_CEILING)接近正无穷大的舍入

setScaler(1,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字>0和ROUND_UP作用一样,数字<0和ROUND_DOWN作用一样

setScaler(1,BigDecimal.ROUND_HALF_EVEN)向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。

注释: 
1:scale指的是你小数点后的位数。比如123.456则score就是3. 
score()就是BigDecimal类中的方法啊。 
比如:BigDecimal b = new BigDecimal(“123.456”); 
b.scale(),返回的就是3. 
2:roundingMode是小数的保留模式。它们都是BigDecimal中的常量字段,有很多种。 
比如:BigDecimal.ROUND_HALF_UP表示的就是4舍5入。 
3:pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 
的意思是说:我用一个BigDecimal对象除以divisor后的结果,并且要求这个结果保留有scale个小数位,roundingMode表示的就是保留模式是什么,是四舍五入啊还是其它的,你可以自己选! 
4:对于一般add、subtract、multiply方法的小数位格式化如下:

BigDecimal mData = new BigDecimal(“9.655”).setScale(2, BigDecimal.ROUND_HALF_UP); 
System.out.println(“mData=” + mData); 
—-结果:—– mData=9.66

Java中,对于不需要任何准确计算精度的数字可以直接使用float或double运算,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。

ava.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:

第一种:BigDecimal(double val)
Translates a double into a BigDecimal.

第二种:BigDecimal(String val)
Translates the String repre sentation of a BigDecimal into a BigDecimal.

使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。

下面是BigDecimal的比较:

BigDecimal a = new BigDecimal (101);
BigDecimal b = new BigDecimal (111);
 
//使用compareTo方法比较
//注意:a、b均不能为null,否则会报空指针
if(a.compareTo(b) == -1){
    System.out.println("a小于b");
}
 
if(a.compareTo(b) == 0){
    System.out.println("a等于b");
}
 
if(a.compareTo(b) == 1){
    System.out.println("a大于b");
}
 
if(a.compareTo(b) > -1){
    System.out.println("a大于等于b");
}
 
if(a.compareTo(b) < 1){
    System.out.println("a小于等于b");
}

JAVA零碎要点015---java BigDecimal常见操作_加减乘除操作_比较_取几位小数四舍五入_随时更新相关推荐

  1. java零碎要点---用java实现生成二维码,与解析代码实现

    创梦综合技术qq交流群:CreDream:251572072 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编 ...

  2. java保留两位小数四舍五入_关于java 四舍五入使java保留2位小数示例讲解

    关于java 四舍五入使java保留2位小数示例讲解 复制代码 代码如下: /* * 测试四舍五入 */ package com.icer.test; /** * * @author Hanbin * ...

  3. Java DecimalFormat 格式化数字,取2位小数,按位取小数,按要求格式化小数 float,double,int,等类型都支持

    关于double,float,等那些个小数类型的数字如何保留2位小数,如何取整,按要求保留小数,如何四舍五入,如何向上取整,如何向下取整.各种姿势的格式化小数.我这做个总结. 搜索的结果都差不多吧,但 ...

  4. BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)

    一.简介 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更 ...

  5. JAVA零碎要点011---使用Java操作wkhtmltopdf实现Html转PDF

    JAVA技术交流QQ群:170933152 2.项目中刚开始用的ITEXT把html转换成pdf,但是itext只能转比较规整的html,如果有比如从 editor这种网页编辑的html的话,就有问题 ...

  6. java零碎要点009---java实现服务器心跳机制,TCP握手

    心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制. 应用场景: 在长连接下,有可能很长一段时间都没有数据往来.理论上说,这个连接是一直保持连接的,但是实际 ...

  7. java零碎要点010---Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  8. JAVA零碎要点008---tomcat启动的时候报错了严重: End event threw exception java.lang.reflect.InvocationTargetExcepti

    tomcat启动的时候报错了: 严重: End event threw exception java.lang.reflect.InvocationTargetException         at ...

  9. java零碎要点---Tesseract 3.0,Java OCR 图像智能字符识别技术,可识别中文

    2.Java OCR 图像智能字符识别技术,可识别中文  几天一直在研究OCR技术,据我了解的情况,国内最专业的OCR软件只有2家,清华TH-OCR和汉王OCR,看了很多的OCR 技术发现好多对英文与 ...

最新文章

  1. 关于fragment backstate的介绍
  2. Mysql中Drop删除用户的名字_mysql5.5 使用drop删除用户
  3. java和mysql之间的时间日期类型传递
  4. CTF---Web入门第八题 Guess Next Session
  5. Java序列化中的SerialVersionUid
  6. 在virtualbox上安装64位centos7和virtual增强工具以及设置共享文件夹
  7. 软件项目管理 第七章 进度计划
  8. 【数学建模】BP神经网络算法模型
  9. 2021年低压电工模拟考试题库
  10. MS17010(永恒之蓝)漏洞复现
  11. 将pyecharts生成的html转为图片的一些问题
  12. 【王木头学科学|深度学习】3.神经网络是什么?如何直接理解它的能力极限?它是如何无线逼近真理的
  13. 微信小程序开发之——Video
  14. java 发邮件 乱码_JavaMail发送中文邮件乱码的解决 | 学步园
  15. SSD算法理解(1)
  16. maven中的命令行命令
  17. Cookie获取问题:ajax方法后端只获取到一个Cookie,Request无法获取到自定义的Cookie
  18. 读hadoop权威指南关于hive
  19. 网络和多媒体知识(2)
  20. JavaScript-GET请求方式

热门文章

  1. STM32F1xx系列单片机通过程序获取MCU信息
  2. 机器学习 集成学习理论基础 随机森林+adaboost
  3. python部署thrift服务以及客户端
  4. 支持javascript的博客汇总
  5. 吴恩达深度学习2.1练习_Improving Deep Neural Networks(Initialization_Regularization_Gradientchecking)
  6. 春运,一场共享发展的旅程
  7. 2017春季学期编译原理期末实验报告
  8. BZOJ 2708 [Violet 1]木偶 DP
  9. Ubuntu 14.04 配置caffe环境
  10. window 平台上面解决不能动态php_mysqli.dll