Java中涉及到⾦额业务的处理
Java中涉及到⾦额业务的处理
Java在java.math包中提供的API类BigDecimal,⽤来对超过16位有效位的数进⾏精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应⽤中,需要对更⼤或者更⼩的数进⾏运算和处理。
float和double只能⽤来做科学计算或者是⼯程计算,在商业计算中要⽤java.math.BigDecimal。
BigDecimal所创建的是对象,我们不能使⽤传统的+、-、*、/等算术运算符直接对其对象进⾏数学运算,⽽必须调⽤其相对应的⽅法。
⽅法中的参数也必须是BigDecimal的对象。
构造器是类的特殊⽅法,专门⽤来创建对象,特别是带有参数的对象。
⼀、MySql数据库中如何定义关于⾦额字段:
建议定义成【DECIMAL】类型,⽽不是float或者是double,因为这个两者是以⼆进制储存的,存在⼀定的误差。
现象:
System.out.println(1f==0.99999999f);
⽤代码去⽐较1和0.99999999,居然打印出true! 这显然是不合理的!
解决办法:
⽅法⼀:⽤字符串或者数组解决多位数问题(不过实现有点复杂)
⽅法⼆:利⽤Java的⼤数类
⼆、BigDecimal构造⽅法
BigDecimal⼀共有4个构造⽅法:
BigDecimal(int) 创建⼀个具有参数所指定整数值的对象。
BigDecimal(double) 创建⼀个具有参数所指定双精度值的对象。(不建议采⽤)
BigDecimal(long) 创建⼀个具有参数所指定长整数值的对象。bigdecimal格式化两位小数
BigDecimal(String) 创建⼀个具有参数所指定以字符串表⽰的数值的对象 [1] 。
三、使⽤⽅式
BigDecimal bigLoanAmount =new BigDecimal("具体数值");//创建BigDecimal对象
BigDecimal bigInterestRate =new BigDecimal("具体数值");
BigDecimal bigInterest = bigLoanAmount.multiply(bigInterestRate);//BigDecimal运算
NumberFormat currency = CurrencyInstance();//建⽴货币格式化引⽤
NumberFormat percent = PercentInstance();//建⽴百分⽐格式化⽤
percent.setMaximumFractionDigits(3);//百分⽐⼩数点最多3位
//利⽤BigDecimal对象作为参数在format()中调⽤货币和百分⽐格式化
System.out.println("Loan amount:\t"+ currency.format(bigLoanAmount));
System.out.println("Interest rate:\t"+ percent.format(bigInterestRate));
System.out.println("Interest:\t"+ currency.format(bigInterest));

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。