Java中常见⾦额的⼀些算法汇总
package com.pactera.jep.utils;
import java.math.BigDecimal;
NumberFormat;
/**
⾦额计算
@author ke
/
public class BigDecimalUtils {
/*
* 两数相加 求和
* @param number1
* @param number2
* @return
*/
public static double add(double number1, double number2){
//注意需要使⽤BigDecimal(String val)构造⽅法
BigDecimal bigDecimal = new String(number1));
BigDecimal bigDecimal2 = new String(number2));
//加法
BigDecimal bigDecimalAdd = bigDecimal.add(bigDecimal2);
return bigDecimalAdd.doubleValue();
}
/**
* 两数相减
* @param number1
* @param number2
* @return
*/
public static double subtract(double number1, double number2){
//注意需要使⽤BigDecimal(String val)构造⽅法
BigDecimal bigDecimal = new String(number1));
BigDecimal bigDecimal2 = new String(number2));
bigdecimal转换为integer
/
/减法
BigDecimal bigDecimalSubtract = bigDecimal.subtract(bigDecimal2);
return bigDecimalSubtract.doubleValue();
}
/**
* 乘法计算
* @param number1
* @param number2
* @return
*/
public static double multiply(double number1, double number2){
/
/注意需要使⽤BigDecimal(String val)构造⽅法
BigDecimal bigDecimal = new String(number1));
BigDecimal bigDecimal2 = new String(number2));
BigDecimal bigDecimalMultiply = bigDecimal.multiply(bigDecimal2);
return bigDecimalMultiply.doubleValue();
}
/**
* 两个数相除四舍五⼊
* @param number1
* @param number2
* @param scale
* @return
*/
public static double divideUp(double number1, double number2, int scale){
//注意需要使⽤BigDecimal(String val)构造⽅法
BigDecimal bigDecimal = new String(number1));
BigDecimal bigDecimal2 = new String(number2));
//除法
BigDecimal bigDecimalDivide = bigDecimal.divide(bigDecimal2, scale, BigDecimal.ROUND_HALF_UP); return bigDecimalDivide.doubleValue();
}
/**
* 两个数相除向下舍去
* @param number1
* @param number2
* @param scale
* @return
*/
public static double divideDown(double number1, double number2, int scale){
//注意需要使⽤BigDecimal(String val)构造⽅法
BigDecimal bigDecimal = new String(number1));
BigDecimal bigDecimal2 = new String(number2));
//除法
BigDecimal bigDecimalDivide = bigDecimal.divide(bigDecimal2, scale, BigDecimal.ROUND_DOWN);
return bigDecimalDivide.doubleValue();
}
/**
* 格式化数值格式为: 12,343,171.6
* @param number1
* @return
*/
public static String format (double number){
//获取常规数值格式
NumberFormat format = NumberInstance();
String str = format.format(number);
return str;
}
/**
* 格式化为整数,如果带⼩数会四舍五⼊到整数 12,343,172
* @param number
* @return
*/
public static String intFormat (double number){
//获取整数数值格式
NumberFormat integer = IntegerInstance();
String str = integer.format(number);
/
**
* 获取货币数值格式¥123.123
* @param number
* @param scale1 设置数的⼩数部分所允许的最⼩位数(如果不⾜后⾯补0)
* @param scale2 设置数的⼩数部分所允许的最⼤位数(如果超过会四舍五⼊) * @return
*/
public static String currencyFormat(double number, int scale1, int scale2){ NumberFormat currency = CurrencyInstance();
//设置数的⼩数部分所允许的最⼩位数(如果不⾜后⾯补0)
currency.setMinimumFractionDigits(scale1);
//设置数的⼩数部分所允许的最⼤位数(如果超过会四舍五⼊)
currency.setMaximumFractionDigits(scale2);
return currency.format(number);
}
/**
* 获取显⽰百分⽐的格式  1,234,317,160.00%
* @param number
* @param scale1 设置数的⼩数部分所允许的最⼩位数(如果不⾜后⾯补0)
* @param scale2 设置数的⼩数部分所允许的最⼤位数(如果超过会四舍五⼊) * @return
*/
public static String percentFormat (double number, int scale1, int scale2){ NumberFormat percent = PercentInstance();
//设置数的⼩数部分所允许的最⼩位数(如果不⾜后⾯补0)
percent.setMinimumFractionDigits(scale1);
//设置数的⼩数部分所允许的最⼤位数(如果超过会四舍五⼊)
percent.setMaximumFractionDigits(scale2);
return percent.format(number);
}
/***
* 添加计算可⽤余额的⽅法
* 根据公式:可⽤余额=账户余额-冻结-留存⾦额计算可⽤余额
* @param ZHHUYE
* @param DJIEJE
* @param BLIUJE
* @return
* @author
*/
public static String subtract(String ZHHUYE, String DJIEJE,String BLIUJE){ String je="0.00";
//注意需要使⽤BigDecimal(String val)构造⽅法
BigDecimal No1 = new BigDecimal(ZHHUYE);
BigDecimal No2 = new BigDecimal(DJIEJE);
BigDecimal No3 = new BigDecimal(BLIUJE);
BigDecimal No4 = new BigDecimal(je);
BigDecimal kyye;
if((No1.subtract(No2).subtract(No3)).doubleValue()>0){
kyye = No1.subtract(No2).subtract(No3);
}else{
kyye=No4;
}
public static void main(String[] args) { double d1 = 1.07;
double d2 = 3;
int scale = 2;
double de = divideDown(d1, d2, 5); System.out.println(de);
double d = divideDown(d1, d2, scale); System.out.println(d);
double da = divideUp(d1, d2, scale); System.out.println(da);
}
}

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