博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java BigDemical在工作中的应用(主要用于钱的处理)
阅读量:5731 次
发布时间:2019-06-18

本文共 2019 字,大约阅读时间需要 6 分钟。

hot3.png

bigDecimal在java.math包下,提供用于执行任意精度小数算法的类。

BigDecimal 不可变的、任意精度的有符号十进制数。

 

 

        java.math.BigDecimal

BigDecimal类使用户完全控制舍入行为。如果未指定舍入模式,并且无法表示准确结果,则抛出一个异常;否则,通过向该操作提供适当的MathContext对象,可以对已选择的精度和舍入模式执行计算。在商业计算中要用BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。

常用构造方法:可以将String类型的数字,int,double,long作为构造方法的参数传入进行构造一个BigDecimal对象。

常用方法:

加减乘除

add(BigDecimal)        BigDecimal对象中的值相加,然后返回这个对象。 

subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。 
multiply(BigDecimal)  BigDecimal对象中的值相乘,然后返回这个对象。 
divide(BigDecimal)     BigDecimal对象中的值相除,然后返回这个对象。 

toString()                将BigDecimal对象的数值转换成字符串。 

doubleValue()          将BigDecimal对象中的值以双精度数返回。 
floatValue()             将BigDecimal对象中的值以单精度数返回。 
longValue()             将BigDecimal对象中的值以长整数返回。 
intValue()               将BigDecimal对象中的值以整数返回。

将计算结果进行格式化:

 

[java]  

  1.       
  2. //金额  
  3.         NumberFormat currency =NumberFormat.getCurrencyInstance();  
  4.         //利率  
  5.         NumberFormat percent = NumberFormat.getPercentInstance();  
  6.         //小数点后最多三位  
  7.         percent.setMaximumFractionDigits(3);  
  8.           
  9.         BigDecimal loanMoney = new BigDecimal(12345.32);    //贷款金额  
  10.         BigDecimal rate = new BigDecimal(0.004);    //利率  
  11.           
  12.         BigDecimal intrest = loanMoney.multiply(rate);    //利息  
  13.           
  14.         System.out.println("贷款:"+currency.format(loanMoney));  
  15.         System.out.println("利率:"+percent.format(rate));  
  16.         System.out.println("利息:"+currency.format(intrest));  
  17. <span style="font-size:18px;">结果:</span>  

 

 

贷款:¥12,345.32

利率:0.4%
利息:¥49.38
在用户展示的时候比较方便

比较大小,例如查询用户钱包的余额和这次要支付的钱的大小。

BigDecimal是通过使用compareTo(BigDecimal)来比较的,具体比较情况如下:

 

[java]  

 

  1. public static void main(String[] args) {  
  2.     BigDecimal a = new BigDecimal("100");  
  3.     BigDecimal b = new BigDecimal("10");  
  4.     BigDecimal c = new BigDecimal("10");  
  5.     int result1 = a.compareTo(b);  
  6.     int result2 = a.compareTo(c);  
  7.     int result3 = b.compareTo(c);  
  8. <span style="font-size:18px;"></span><pre name="code" class="java">    int result4 = b.compareTo(a);  

  System.out.println(result1); System.out.println(result2); System.out.println(result3);

 

[java]  

 

  1. System.out.println(result4);  

 }

 

 

结果:

 

1

1  

0

-1

compareTo左边大,输出1,,右边大输出-1,相等输出0

 

转载于:https://my.oschina.net/legend1989/blog/888291

你可能感兴趣的文章
Qt编写输入法V2018超级终结版
查看>>
<context:component-scan>详解
查看>>
DS博客作业07--查找
查看>>
[JOI2017] サッカー (Soccer)
查看>>
Git 方法
查看>>
[Python] numpy.nonzero
查看>>
2016-11-29
查看>>
C#反射的坑
查看>>
css3 box-shadow阴影(外阴影与外发光)讲解
查看>>
时间助理 时之助
查看>>
nginx快速安装
查看>>
自定义转场动画
查看>>
英国征召前黑客组建“网络兵团”
查看>>
Silverlight 2.5D RPG游戏“.NET技术”技巧与特效处理:(十二)魔法系统
查看>>
[NPM] Run npm scripts in series
查看>>
vs2013修改书签(vs书签文件位置)
查看>>
BZOJ 1923: [Sdoi2010]外星千足虫 [高斯消元XOR]
查看>>
C语言学习笔记
查看>>
PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...
查看>>
PS 如何使用液化工具给人物减肥
查看>>