BigDecimal最基础用法【转】
BigDecimal最基础用法
用字符串生成的BigDecimal是不会丢精度的.
- 简单除法.
public class DemoBigDecimal {
public static void main(String[] args) {
String value = "1235";
if( !value.isEmpty() ){
BigDecimal bd = new BigDecimal(value);
bd = bd.divide(new BigDecimal(1000),3,RoundingMode.HALF_UP);//精确到小数点后3位,且用四舍五入
value = bd.toString();
System.out.println(value);
}
}
}
NumberFormat另一种设精度方法?
if(value instanceof Number) {//浮点数精度进行兼容
java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
nf.setGroupingUsed(false);
nf.setMaximumIntegerDigits(30);
nf.setMaximumFractionDigits(8);
//nf.setMinimumFractionDigits(2);
BeanTool.setAttributeByString(bean, entry.getKey(), nf.format(value));
continue;
}
DecimalFormat保留小数位数
保留小数:java DecimalFormat format 方法的使用
public class test {
public static void main(String[] args) {
String ret = getConvertData(01.0003);
System.out.println(ret);
}
public static String getConvertData(Double data){
String ret = "";
java.text.DecimalFormat df = new java.text.DecimalFormat("0.00");
ret = df.format(data);
return ret;
}
}
BigDecimal比较大小
【重点】在进行比较后时一定要让原始构造函数的参数保持一致, 不然极有可能得不到预期结果,见下例
import java.math.BigDecimal;
public class TempTest {
public static void main(String[] args) throws Exception {
BigDecimal bd1 = new BigDecimal("1.23");
BigDecimal bd2 = new BigDecimal("1.230");
BigDecimal bd3 = new BigDecimal(1.23);
BigDecimal bd4 = new BigDecimal(1.230);
//compareTo()返回的结果是int类型,-1表示小于,0是等于,1是大于。
System.out.println(bd1.compareTo(bd2));//"1.23"和"1.230"相等,打印0
System.out.println(bd3.compareTo(bd4));//1.23和1.230相等,打印0
//【重点】在进行比较后时一定要让原始构造函数的参数保持一致, 不然极有可能得不到预期结果,见下例
System.out.println(bd1.compareTo(bd3));//根据结果"1.23"和1.23,前者更大,一定要避开这种类型不匹配的比较.
BigDecimal bd5 = new BigDecimal(2);
System.out.println(bd4.compareTo(bd5));//1.230比2小,打印-1
System.out.println(bd5.compareTo(bd4));//2比1.230大,打印1
}
}
参考
BigDecimal加减乘除计算以及比较大小==>https://www.cnblogs.com/whatlonelytear/p/5138989.html
BigDecimal最基础用法【转】的更多相关文章
- BigDecimal最基础用法
BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...
- PropertyGrid控件由浅入深(二):基础用法
目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...
- logstash安装与基础用法
若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...
- elasticsearch安装与基础用法
来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...
- Vue组件基础用法
前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...
- Smarty基础用法
一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...
- 前端自动化测试神器-Katalon的基础用法
前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...
- Bootstrap fileinput:文件上传插件的基础用法
官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...
- asyncio 基础用法
asyncio 基础用法 python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? asyncio是Python 3.4版本引入 ...
随机推荐
- 文本文件合并(C++实现)
直接附上代码吧 #include<iostream> #include<fstream> #include<cstdlib> using namespace std ...
- nodefs模块的使用demo
为什么要使用递归?因为stat本身就是一个异步的函数所有存在异步问题不能够进行循环遍历. 在使用该种方法时候需要注意的一点是必须要在箭头标记处进行数据数组的存取.否则会由于异步问题导致输出空或者其他问 ...
- python之tkinter使用-滚动条
# GUI:tkinter使用 # 通过调节滚动条改变标签中字体大小 import tkinter as tk def resize(ev=None): '''改变label字体大小''' label ...
- luogu3107
洛谷P3107题面 相对较为模板化的代码 f[i][j][bo1][bo2]记录到第i位,数字num出现了x次(j初始为20,若当前数字不为num,j++:否则j--:最后只要记录j<=20的总 ...
- BZOJ4127Abs——树链剖分+线段树
题目描述 给定一棵树,设计数据结构支持以下操作 1 u v d 表示将路径 (u,v) 加d 2 u v 表示询问路径 (u,v) 上点权绝对值的和 输入 第一行两个整数n和m,表示结点个数和操作数 ...
- BZOJ1041 HAOI2008圆上的整点(数论)
求x2+y2=r2的整数解个数,显然要化化式子.考虑求正整数解. y2=r2-x2→y2=(r-x)(r+x)→(r-x)(r+x)为完全平方数→(r-x)(r+x)/d2为完全平方数,d=gcd(r ...
- 学习Spring Boot:(二十一)使用 EhCache 实现数据缓存
前言 当多次查询数据库影响到系统性能的时候,可以考虑使用缓存,来解决数据访问新能的问题. SpringBoot 已经为我们提供了自动配置多个 CacheManager 的实现,只要去实现使用它就可以了 ...
- 洛谷 P2158 [SDOI2008]仪仗队 解题报告
P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...
- 在Sqlite中通过Replace来实现插入和更新
你可能在批量处理一个事务的时候,想要批量插入一系列的数据,但是这些数据当添加完一次之后,重新添加的时候,你不想要重新添加,只是想将原有的数据进行更新,例如:我想要通过Excel将一系列的图书导入到 ...
- SpringMvc的Url映射和传参案例
Springmvc的基本使用,包括url映射.参数映射.页面跳转.ajax和文件上传 以前学习的时候写的代码案例,今天整理笔记的时候找到了,很久没有来园子了,发上来当个在线笔记用吧,免的时间长了又忘了 ...