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最基础用法【转】的更多相关文章

  1. BigDecimal最基础用法

    BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...

  2. PropertyGrid控件由浅入深(二):基础用法

    目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...

  3. logstash安装与基础用法

    若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...

  4. elasticsearch安装与基础用法

    来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...

  5. Vue组件基础用法

    前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...

  6. Smarty基础用法

    一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...

  7. 前端自动化测试神器-Katalon的基础用法

    前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...

  8. Bootstrap fileinput:文件上传插件的基础用法

    官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...

  9. asyncio 基础用法

    asyncio 基础用法 python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? asyncio是Python 3.4版本引入 ...

随机推荐

  1. shell脚本--权限分配

    因为shell脚本内部是很多命令的集合,这些命令也许会涉及到操作某一个文件,而且shell脚本的运行,也是需要当前用户对脚本具有运行的权限,否则,会因为权限不够而失败. 首先最重要的一点:修改权限,只 ...

  2. VMMAP的简单使用

    1. dotnet.exe 进程占用内存非常疯狂.. 开发同事 提供了一个工具进行简单分析 vmmap.exe 执行了 Ctrl+E 之后 发现将 heap 和managed heap 的内容放到了p ...

  3. Oracle18c OnlyExadataVersion 安装说明

    1.根据惜分飞还有盖国强老师云和恩墨的文章, 验证了下OnlyExadataVersion的Oracle18c的数据库安装过程. 2.oracle参数修改以及创建用户, 目录, 修改.bash_pro ...

  4. JS文件的写入

    1.引入filesaver.js插件: 2.JS: 方法一:var file = new File(["欢迎访问 hangge.com"], "文件导出测试.txt&qu ...

  5. charts & data visualization

    charts & data visualization https://www.sitepoint.com/15-best-javascript-charting-libraries/ Can ...

  6. PHP常用工具类积累

    第一 请求第三方接口的工具类 例如,封装了get和post请求方法的工具类,代码如下: <?php class HttpClient{ /** * HttpClient * @param arr ...

  7. c++ 可变参数模板

    可变参数模板,自己尝试了个例子,如下: // variadicTemplates.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #incl ...

  8. BZOJ5249 九省联考2018IIIDX(线段树+贪心)

    显然这形成了一个树形结构.考虑这样一种贪心:按照曲目顺序,每次取消其父亲的预留,并选择当前可选择(保证其子树有合法选择且满足预留)的最大值,然后对其子树预留出大于等于他的一些值.这个做法显然是正确的. ...

  9. 让一个继承unittest.TestCase的类下的setUp和tearDown只执行一次

    知道unittest单元测试框架的朋友应该都知道, 执行继承了unittest.TestCase的类下每个test开头的方法(就是用例)时,都会执行setUp和tearDown,如下面的例子所示: i ...

  10. Windows下禁用锁屏热键WinKey+L

    在注册表[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]中创建名字为DisableLockWo ...