java数学运算
/**
* Copyright (C) DXHM 版权所有
* @文件名 MathExtend.java
* @包名 dxt.financemanage.comm.util
* @说明 TODO(描述文件做什么)
* @作者 XieZhenGuo
* @时间 Dec 11, 2010 3:37:38 PM
* @版本 V1.0
*/
package cn.util;
import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
* @类名 MathExtend
* @描述 科学计数法
* @作者 XieZhenGuo
* @日期 Dec 11, 2010 3:37:38 PM ========修改日志=======
*
*/
public class MathExtend {
// 默认除法运算精度
private static final int DEFAULT_DIV_SCALE = 2;
/**
*
* 提供精确的加法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数的和
*
*/
public static double add(double v1, double v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.add(b2).doubleValue();
}
/**
*
* 提供精确的加法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数数学加和,以字符串格式返回
*
*/
public static String add(String v1, String v2) {
if ("".equals(v1) || null == v1||"null".equals(v1)) {
v1 = "0";
}
if ("".equals(v2) || null == v2||"null".equals(v2)) {
v2 = "0";
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.add(b2).toString();
}
/**
*
* 提供精确的减法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数的差
*
*/
public static double subtract(double v1, double v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.subtract(b2).doubleValue();
}
/**
*
* 提供精确的减法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数数学差,以字符串格式返回
*
*/
public static String subtract(String v1, String v2) {
if ("".equals(v1) || null == v1) {
v1 = "0";
}
if ("".equals(v2) || null == v2) {
v2 = "0";
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.subtract(b2).toString();
}
/**
*
* 提供精确的乘法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数的积
*
*/
public static double multiply(double v1, double v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.multiply(b2).doubleValue();
}
/**
*
* 提供精确的乘法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数的数学积,以字符串格式返回
*
*/
public static String multiply(String v1, String v2) {
if ("".equals(v1) || null == v1) {
v1 = "0";
}
if ("".equals(v2) || null == v2) {
v2 = "0";
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.multiply(b2).toString();
}
/**
*
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
*
* 小数点以后DEFAULT_DIV_SCALE位,以后的数字四舍五入,舍入模式采用ROUND_HALF_EVEN
*
* @param v1
*
* @param v2
*
* @return 两个参数的商
*
*/
public static double divide(double v1, double v2) {
return divide(v1, v2, DEFAULT_DIV_SCALE);
}
/**
*
* 提供(相对)精确的除法运算当发生除不尽的情况时,由scale参数指
*
* 定精度,以后的数字四舍五入舍入模式采用ROUND_HALF_EVEN
*
* @param v1
*
* @param v2
*
* @param scale
* 表示需要精确到小数点以后几位
*
* @return 两个参数的商
*
*/
public static double divide(double v1, double v2, int scale) {
return divide(v1, v2, scale, BigDecimal.ROUND_HALF_EVEN);
}
/**
*
* 提供(相对)精确的除法运算当发生除不尽的情况时,由scale参数指
*
* 定精度,以后的数字四舍五入舍入模式采用用户指定舍入模式
*
* @param v1
*
* @param v2
*
* @param scale
* 表示需要精确到小数点以后几位
*
* @param round_mode
* 表示用户指定的舍入模式
*
* @return 两个参数的商
*
*/
public static double divide(double v1, double v2, int scale, int round_mode) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.divide(b2, scale, round_mode).doubleValue();
}
/**
*
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
*
* 小数点以后10位,以后的数字四舍五入,舍入模式采用ROUND_HALF_EVEN
*
* @param v1
*
* @param v2
*
* @return 两个参数的商,以字符串格式返回
*
*/
public static String divide(String v1, String v2) {
return divide(v1, v2, DEFAULT_DIV_SCALE);
}
/**
*
* 提供(相对)精确的除法运算当发生除不尽的情况时,由scale参数指
*
* 定精度,以后的数字四舍五入舍入模式采用ROUND_HALF_EVEN
*
* @param v1
*
* @param v2
*
* @param scale
* 表示需要精确到小数点以后几位
*
* @return 两个参数的商,以字符串格式返回
*
*/
public static String divide(String v1, String v2, int scale) {
return divide(v1, v2, DEFAULT_DIV_SCALE, BigDecimal.ROUND_HALF_EVEN);
}
public static String divides(String v1, String v2, int scale) {
return divide(v1, v2, scale, BigDecimal.ROUND_HALF_EVEN);
}
public static String dividePercent(String v1, String v2, int scale) {
String tempString=divide(v1, v2, scale, BigDecimal.ROUND_HALF_UP);
return multiply(tempString, "100");
}
/**
*
* 提供(相对)精确的除法运算当发生除不尽的情况时,由scale参数指
*
* 定精度,以后的数字四舍五入舍入模式采用用户指定舍入模式
*
* @param v1
*
* @param v2
*
* @param scale
* 表示需要精确到小数点以后几位
*
* @param round_mode
* 表示用户指定的舍入模式
*
* @return 两个参数的商,以字符串格式返回
*
*/
public static String divide(String v1, String v2, int scale, int round_mode) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
if ("".equals(v1) || null == v1 || "null" == v1) {
v1 = "0";
return "";
}
if ("".equals(v2) || null == v2 || "null" == v2) {
v2 = "0";
return "";
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.divide(b2, scale, round_mode).toString();
}
/**
*
* 提供精确的小数位四舍五入处理,舍入模式采用ROUND_HALF_EVEN
*
* @param v
* 需要四舍五入的数字
*
* @param scale
* 小数点后保留几位
*
* @return 四舍五入后的结果
*
*/
public static double round(double v, int scale) {
return round(v, scale, BigDecimal.ROUND_HALF_EVEN);
}
/**
*
* 提供精确的小数位四舍五入处理
*
* @param v
* 需要四舍五入的数字
*
* @param scale
* 小数点后保留几位
*
* @param round_mode
* 指定的舍入模式
*
* @return 四舍五入后的结果
*
*/
public static double round(double v, int scale, int round_mode) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(v);
return b.setScale(scale, round_mode).doubleValue();
}
/**
*
* 提供精确的小数位四舍五入处理,舍入模式采用ROUND_HALF_UP
*
* @param v
* 需要四舍五入的数字
*
* @param scale
* 小数点后保留几位
*
* @return 四舍五入后的结果,以字符串格式返回
*
*/
public static String round(String v, int scale) {
return round(v, scale, BigDecimal.ROUND_HALF_UP);
}
/**
*
* 提供精确的小数位四舍五入处理
*
* @param v
* 需要四舍五入的数字
*
* @param scale
* 小数点后保留几位
*
* @param round_mode
* 指定的舍入模式
*
* @return 四舍五入后的结果,以字符串格式返回
*
*/
public static String round(String v, int scale, int round_mode) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
if ("".equals(v) || null == v) {
v = "0";
}
BigDecimal b = new BigDecimal(v);
return b.setScale(scale, round_mode).toString();
}
/**
*
* @名称 moneyStr
* @描述 金额转换
* @作者 XieZhenGuo
* @时间 Feb 24, 2011 11:16:28 AM
* @@param money
* @@return
*/
public static String moneyStr(String money) {
if ("".equals(money) || null == money) {
money = "0.00";
}
DecimalFormat myFormat = new DecimalFormat("#,##0.00");
String temp = myFormat.format(Double.valueOf(money));
return temp;
}
/**
*
* @名称 moneyStr
* @描述 金额转换
* @作者 XieZhenGuo
* @时间 Feb 24, 2011 11:16:28 AM
* @@param money
* @@return
*/
public static String moneyStr(Double money) {
DecimalFormat myFormat = new DecimalFormat("#,##0.00");
String temp = myFormat.format(money);
return temp;
}
/**
*
* 方法描述: 保留六位小数
* @param money
* @return
* String
* @author rjq
* @date Nov 9, 2015 4:19:13 PM
*/
public static String moneyStrForTen(String money) {
if ("".equals(money) || null == money) {
money = "0.000000";
}
DecimalFormat myFormat = new DecimalFormat("#,##0.000000");
String temp = myFormat.format(Double.valueOf(money));
return temp;
}
/**
*
* @名称 comparison
* @描述 两个数字进行比较
* @作者 XieZhenGuo
* @时间 Apr 1, 2011 10:20:10 AM
* @param v1
* @param v2
* @return 0:相等;1:大于;-1:小于
*/
public static int comparison(String v1, String v2) {
int rflag = 0;
if ("".equals(v1) || null == v1) {
v1 = "0";
}
if ("".equals(v2) || null == v2) {
v2 = "0";
}
BigDecimal a = new BigDecimal(v1);
BigDecimal b = new BigDecimal(v2);
rflag = a.compareTo(b);
return rflag;
}
/**
* 格式化金额,例如:562.007200 格式化后是 562.0072
*/
public static String getFormatMoney(String str){
String strq = "";
String strh = "";
char strchar;
String strTmp = "";
String Tmp = "";
String[] strArr = str.split("\\.");
strq = strArr[0];
strh = strArr[1];
int m = strh.length();
for (int i = strh.length()-1; i >=0; i--) {
strchar = strh.charAt(i);
strTmp = strTmp + strchar;
Tmp = Tmp + "0";
if(strTmp.equals(Tmp)){
m = i;
}
}
if(m==0){
strTmp = strq;
}else{
strTmp = strq+"."+strh.substring(0,m);
}
return strTmp;
}
/**
*
* 方法描述: 格式化金额成万元格式
* @param str
* @return
* String
* @author rjq
* @date Nov 9, 2015 4:21:15 PM
*/
public static String getFormatMoneyForWanyuan(double fromAmt ){
String str=String.valueOf(fromAmt);
String strTmp = getFormatMoneyForWanyuan(str);
return strTmp;
}
/**
*
* 方法描述: 格式化金额成万元格式
* @param str
* @return
* String
* @author rjq
* @date Nov 9, 2015 4:21:15 PM
*/
public static String getFormatMoneyForWanyuan(String str){
str =divides(str, "10000", 6);
str=moneyStrForTen(str);
String strq = "";
String strh = "";
char strchar;
String strTmp = "";
String Tmp = "";
String[] strArr = str.split("\\.");
strq = strArr[0];
strh = strArr[1];
int m = strh.length();
for (int i = strh.length()-1; i >=0; i--) {
strchar = strh.charAt(i);
strTmp = strTmp + strchar;
Tmp = Tmp + "0";
if(strTmp.equals(Tmp)){
m = i;
}
}
if(m==0){
strTmp = strq;
}else{
strTmp = strq+"."+strh.substring(0,m);
}
return strTmp;
}
/**
* 方法描述: 转换成万元不带,
* @param str
* @return
* String
* @author YuShuai
* @date 2015-12-30 上午11:58:17
*/
public static String getFormatMoneyForWanyuanswt(String str){
str =divides(str, "10000", 6);
str=moneyStrForTenswt(str);
String strq = "";
String strh = "";
char strchar;
String strTmp = "";
String Tmp = "";
String[] strArr = str.split("\\.");
strq = strArr[0];
strh = strArr[1];
int m = strh.length();
for (int i = strh.length()-1; i >=0; i--) {
strchar = strh.charAt(i);
strTmp = strTmp + strchar;
Tmp = Tmp + "0";
if(strTmp.equals(Tmp)){
m = i;
}
}
if(m==0){
strTmp = strq;
}else{
strTmp = strq+"."+strh.substring(0,m);
}
return strTmp;
}
/**
* 方法描述: 保留6位小数不带,
* @param money
* @return
* String
* @author YuShuai
* @date 2015-12-30 上午11:58:52
*/
public static String moneyStrForTenswt(String money) {
if ("".equals(money) || null == money) {
money = "0.000000";
}
DecimalFormat myFormat = new DecimalFormat("###0.000000");
String temp = myFormat.format(Double.valueOf(money));
return temp;
}
public static void main(String[] args) {
}
}
* Copyright (C) DXHM 版权所有
* @文件名 MathExtend.java
* @包名 dxt.financemanage.comm.util
* @说明 TODO(描述文件做什么)
* @作者 XieZhenGuo
* @时间 Dec 11, 2010 3:37:38 PM
* @版本 V1.0
*/
package cn.util;
import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
* @类名 MathExtend
* @描述 科学计数法
* @作者 XieZhenGuo
* @日期 Dec 11, 2010 3:37:38 PM ========修改日志=======
*
*/
public class MathExtend {
// 默认除法运算精度
private static final int DEFAULT_DIV_SCALE = 2;
/**
*
* 提供精确的加法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数的和
*
*/
public static double add(double v1, double v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.add(b2).doubleValue();
}
/**
*
* 提供精确的加法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数数学加和,以字符串格式返回
*
*/
public static String add(String v1, String v2) {
if ("".equals(v1) || null == v1||"null".equals(v1)) {
v1 = "0";
}
if ("".equals(v2) || null == v2||"null".equals(v2)) {
v2 = "0";
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.add(b2).toString();
}
/**
*
* 提供精确的减法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数的差
*
*/
public static double subtract(double v1, double v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.subtract(b2).doubleValue();
}
/**
*
* 提供精确的减法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数数学差,以字符串格式返回
*
*/
public static String subtract(String v1, String v2) {
if ("".equals(v1) || null == v1) {
v1 = "0";
}
if ("".equals(v2) || null == v2) {
v2 = "0";
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.subtract(b2).toString();
}
/**
*
* 提供精确的乘法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数的积
*
*/
public static double multiply(double v1, double v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.multiply(b2).doubleValue();
}
/**
*
* 提供精确的乘法运算
*
* @param v1
*
* @param v2
*
* @return 两个参数的数学积,以字符串格式返回
*
*/
public static String multiply(String v1, String v2) {
if ("".equals(v1) || null == v1) {
v1 = "0";
}
if ("".equals(v2) || null == v2) {
v2 = "0";
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.multiply(b2).toString();
}
/**
*
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
*
* 小数点以后DEFAULT_DIV_SCALE位,以后的数字四舍五入,舍入模式采用ROUND_HALF_EVEN
*
* @param v1
*
* @param v2
*
* @return 两个参数的商
*
*/
public static double divide(double v1, double v2) {
return divide(v1, v2, DEFAULT_DIV_SCALE);
}
/**
*
* 提供(相对)精确的除法运算当发生除不尽的情况时,由scale参数指
*
* 定精度,以后的数字四舍五入舍入模式采用ROUND_HALF_EVEN
*
* @param v1
*
* @param v2
*
* @param scale
* 表示需要精确到小数点以后几位
*
* @return 两个参数的商
*
*/
public static double divide(double v1, double v2, int scale) {
return divide(v1, v2, scale, BigDecimal.ROUND_HALF_EVEN);
}
/**
*
* 提供(相对)精确的除法运算当发生除不尽的情况时,由scale参数指
*
* 定精度,以后的数字四舍五入舍入模式采用用户指定舍入模式
*
* @param v1
*
* @param v2
*
* @param scale
* 表示需要精确到小数点以后几位
*
* @param round_mode
* 表示用户指定的舍入模式
*
* @return 两个参数的商
*
*/
public static double divide(double v1, double v2, int scale, int round_mode) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.divide(b2, scale, round_mode).doubleValue();
}
/**
*
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
*
* 小数点以后10位,以后的数字四舍五入,舍入模式采用ROUND_HALF_EVEN
*
* @param v1
*
* @param v2
*
* @return 两个参数的商,以字符串格式返回
*
*/
public static String divide(String v1, String v2) {
return divide(v1, v2, DEFAULT_DIV_SCALE);
}
/**
*
* 提供(相对)精确的除法运算当发生除不尽的情况时,由scale参数指
*
* 定精度,以后的数字四舍五入舍入模式采用ROUND_HALF_EVEN
*
* @param v1
*
* @param v2
*
* @param scale
* 表示需要精确到小数点以后几位
*
* @return 两个参数的商,以字符串格式返回
*
*/
public static String divide(String v1, String v2, int scale) {
return divide(v1, v2, DEFAULT_DIV_SCALE, BigDecimal.ROUND_HALF_EVEN);
}
public static String divides(String v1, String v2, int scale) {
return divide(v1, v2, scale, BigDecimal.ROUND_HALF_EVEN);
}
public static String dividePercent(String v1, String v2, int scale) {
String tempString=divide(v1, v2, scale, BigDecimal.ROUND_HALF_UP);
return multiply(tempString, "100");
}
/**
*
* 提供(相对)精确的除法运算当发生除不尽的情况时,由scale参数指
*
* 定精度,以后的数字四舍五入舍入模式采用用户指定舍入模式
*
* @param v1
*
* @param v2
*
* @param scale
* 表示需要精确到小数点以后几位
*
* @param round_mode
* 表示用户指定的舍入模式
*
* @return 两个参数的商,以字符串格式返回
*
*/
public static String divide(String v1, String v2, int scale, int round_mode) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
if ("".equals(v1) || null == v1 || "null" == v1) {
v1 = "0";
return "";
}
if ("".equals(v2) || null == v2 || "null" == v2) {
v2 = "0";
return "";
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.divide(b2, scale, round_mode).toString();
}
/**
*
* 提供精确的小数位四舍五入处理,舍入模式采用ROUND_HALF_EVEN
*
* @param v
* 需要四舍五入的数字
*
* @param scale
* 小数点后保留几位
*
* @return 四舍五入后的结果
*
*/
public static double round(double v, int scale) {
return round(v, scale, BigDecimal.ROUND_HALF_EVEN);
}
/**
*
* 提供精确的小数位四舍五入处理
*
* @param v
* 需要四舍五入的数字
*
* @param scale
* 小数点后保留几位
*
* @param round_mode
* 指定的舍入模式
*
* @return 四舍五入后的结果
*
*/
public static double round(double v, int scale, int round_mode) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(v);
return b.setScale(scale, round_mode).doubleValue();
}
/**
*
* 提供精确的小数位四舍五入处理,舍入模式采用ROUND_HALF_UP
*
* @param v
* 需要四舍五入的数字
*
* @param scale
* 小数点后保留几位
*
* @return 四舍五入后的结果,以字符串格式返回
*
*/
public static String round(String v, int scale) {
return round(v, scale, BigDecimal.ROUND_HALF_UP);
}
/**
*
* 提供精确的小数位四舍五入处理
*
* @param v
* 需要四舍五入的数字
*
* @param scale
* 小数点后保留几位
*
* @param round_mode
* 指定的舍入模式
*
* @return 四舍五入后的结果,以字符串格式返回
*
*/
public static String round(String v, int scale, int round_mode) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
if ("".equals(v) || null == v) {
v = "0";
}
BigDecimal b = new BigDecimal(v);
return b.setScale(scale, round_mode).toString();
}
/**
*
* @名称 moneyStr
* @描述 金额转换
* @作者 XieZhenGuo
* @时间 Feb 24, 2011 11:16:28 AM
* @@param money
* @@return
*/
public static String moneyStr(String money) {
if ("".equals(money) || null == money) {
money = "0.00";
}
DecimalFormat myFormat = new DecimalFormat("#,##0.00");
String temp = myFormat.format(Double.valueOf(money));
return temp;
}
/**
*
* @名称 moneyStr
* @描述 金额转换
* @作者 XieZhenGuo
* @时间 Feb 24, 2011 11:16:28 AM
* @@param money
* @@return
*/
public static String moneyStr(Double money) {
DecimalFormat myFormat = new DecimalFormat("#,##0.00");
String temp = myFormat.format(money);
return temp;
}
/**
*
* 方法描述: 保留六位小数
* @param money
* @return
* String
* @author rjq
* @date Nov 9, 2015 4:19:13 PM
*/
public static String moneyStrForTen(String money) {
if ("".equals(money) || null == money) {
money = "0.000000";
}
DecimalFormat myFormat = new DecimalFormat("#,##0.000000");
String temp = myFormat.format(Double.valueOf(money));
return temp;
}
/**
*
* @名称 comparison
* @描述 两个数字进行比较
* @作者 XieZhenGuo
* @时间 Apr 1, 2011 10:20:10 AM
* @param v1
* @param v2
* @return 0:相等;1:大于;-1:小于
*/
public static int comparison(String v1, String v2) {
int rflag = 0;
if ("".equals(v1) || null == v1) {
v1 = "0";
}
if ("".equals(v2) || null == v2) {
v2 = "0";
}
BigDecimal a = new BigDecimal(v1);
BigDecimal b = new BigDecimal(v2);
rflag = a.compareTo(b);
return rflag;
}
/**
* 格式化金额,例如:562.007200 格式化后是 562.0072
*/
public static String getFormatMoney(String str){
String strq = "";
String strh = "";
char strchar;
String strTmp = "";
String Tmp = "";
String[] strArr = str.split("\\.");
strq = strArr[0];
strh = strArr[1];
int m = strh.length();
for (int i = strh.length()-1; i >=0; i--) {
strchar = strh.charAt(i);
strTmp = strTmp + strchar;
Tmp = Tmp + "0";
if(strTmp.equals(Tmp)){
m = i;
}
}
if(m==0){
strTmp = strq;
}else{
strTmp = strq+"."+strh.substring(0,m);
}
return strTmp;
}
/**
*
* 方法描述: 格式化金额成万元格式
* @param str
* @return
* String
* @author rjq
* @date Nov 9, 2015 4:21:15 PM
*/
public static String getFormatMoneyForWanyuan(double fromAmt ){
String str=String.valueOf(fromAmt);
String strTmp = getFormatMoneyForWanyuan(str);
return strTmp;
}
/**
*
* 方法描述: 格式化金额成万元格式
* @param str
* @return
* String
* @author rjq
* @date Nov 9, 2015 4:21:15 PM
*/
public static String getFormatMoneyForWanyuan(String str){
str =divides(str, "10000", 6);
str=moneyStrForTen(str);
String strq = "";
String strh = "";
char strchar;
String strTmp = "";
String Tmp = "";
String[] strArr = str.split("\\.");
strq = strArr[0];
strh = strArr[1];
int m = strh.length();
for (int i = strh.length()-1; i >=0; i--) {
strchar = strh.charAt(i);
strTmp = strTmp + strchar;
Tmp = Tmp + "0";
if(strTmp.equals(Tmp)){
m = i;
}
}
if(m==0){
strTmp = strq;
}else{
strTmp = strq+"."+strh.substring(0,m);
}
return strTmp;
}
/**
* 方法描述: 转换成万元不带,
* @param str
* @return
* String
* @author YuShuai
* @date 2015-12-30 上午11:58:17
*/
public static String getFormatMoneyForWanyuanswt(String str){
str =divides(str, "10000", 6);
str=moneyStrForTenswt(str);
String strq = "";
String strh = "";
char strchar;
String strTmp = "";
String Tmp = "";
String[] strArr = str.split("\\.");
strq = strArr[0];
strh = strArr[1];
int m = strh.length();
for (int i = strh.length()-1; i >=0; i--) {
strchar = strh.charAt(i);
strTmp = strTmp + strchar;
Tmp = Tmp + "0";
if(strTmp.equals(Tmp)){
m = i;
}
}
if(m==0){
strTmp = strq;
}else{
strTmp = strq+"."+strh.substring(0,m);
}
return strTmp;
}
/**
* 方法描述: 保留6位小数不带,
* @param money
* @return
* String
* @author YuShuai
* @date 2015-12-30 上午11:58:52
*/
public static String moneyStrForTenswt(String money) {
if ("".equals(money) || null == money) {
money = "0.000000";
}
DecimalFormat myFormat = new DecimalFormat("###0.000000");
String temp = myFormat.format(Double.valueOf(money));
return temp;
}
public static void main(String[] args) {
}
}