/**
* 格式化数字,例如:12345转化为12,345
*
* @param dValue
* 被格式化的数值
* @param iScale
* 小数点后保留位数,不足补0
* @return
*/
public static String formatNumber(double dValue, int iScale) {//假如保留3为小数
DecimalFormat df = null;
StringBuffer sPattern = new StringBuffer(",##0");
if (iScale > 0) {
sPattern.append(".");//sPattern=",##0.";
for (int i = 0; i < iScale; i++) {
sPattern.append("0");//退出for后sPattern=",##0.000";
}
}
df = new DecimalFormat(sPattern.toString());//等价于new DecimalFormat(",##0.000");
String str = df.format(dValue);//格式化传入的double类型参数dValue
return str;//返回格式化后的String类型的dValue
}
public static String formatNumber(double dValue, String pattern) {//传入参数列1234.56 ",##0.000"
DecimalFormat df = null;
df = new DecimalFormat(pattern);//new DecimalFormat(",##0.000");
String str = df.format(dValue);
return str;//1,234.560
}
public static String formatNumber(long lValue) {
return formatNumber((double) lValue, 0);//调用了上面的方法传入小数位为0并把long强转double,返回String类型的
}
/**
* 解析格式化的字符串,转化为数值,例如:12,345.00转化为12345
*
* @param text
* 被格式化的数值
* @return
*/
public static double parseNumber(String text) {
int index = text.indexOf(",");
String sbNumber = "";
while (index != -1) {//循环搜寻,并去除,号 这个算法好理解但是感觉用正则表达式会好些
sbNumber += text.substring(0, index);//下面用一个正则的举例str=str.replaceAll(",","");
text = text.substring(index + 1, text.length());
index = text.indexOf(",");
}
sbNumber += text;
return Double.parseDouble(sbNumber);
}
/**
* 上面那个方法用正则表达式来实现
* 解析格式化的字符串,转化为数值,例如:12,345.00转化为12345
*
* @param text
* 被格式化的数值
* @return
*/
public static double parseNumber1(String text){
text=text.replaceAll(",","");//替换字符串中的所有逗号
return Double.parseDouble(text);
}
public static long parseLong(String text) {
int index = text.indexOf(",");
String sbNumber = "";
//同上,下面这段代码可以用正则表达式替换
while (index != -1) {
sbNumber += text.substring(0, index);
text = text.substring(index + 1, text.length());
index = text.indexOf(",");
}
sbNumber += text;
System.out.println(sbNumber);
return Long.parseLong(sbNumber);
}
/*
*该方法作用是把double的number转为String且不用科学计数法的方式
*
*/
public static String toString(double number) {
NumberFormat format = NumberFormat.getInstance();
format.setGroupingUsed(false);
return format.format(number);
}
/**
* 中文金额的大写转换的包装函数* @param String 金额
* @return String
*/
public static String makeUpperCaseSum(String je) {
return makeUpperCaseSum(Double.parseDouble(je));
}
/**
* 中文金额的大写转换
* @param double 金额
* @return String
*/
public static String makeUpperCaseSum(double je) {
if (je < 0)
je *= -1;
final String[] upper_number =
{ "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };
final String[] number_dw =
{
"",
"圆",
"拾",
"佰",
"仟",
"万",
"拾",
"佰",
"仟",
"亿",
"拾",
"佰",
"仟",
"万" };
String operate, upper_str, vsDx;
int i, j, point_pos, int_len;
if (je < 0.01)
return "零圆整";
upper_str = "";
DecimalFormat aFormat =
(DecimalFormat) new java.text.DecimalFormat("##0.00");
operate = new String(aFormat.format(je));
point_pos = operate.indexOf(".");
if (point_pos == -1)
int_len = operate.length();
else {
if (operate.length() - point_pos <= 2)
operate += "0";
int_len = point_pos;
}
if (int_len > number_dw.length - 1)
return "too long !!!";
if (je > 0) {
for (i = 0; i < int_len; i++) {
j = int_len - i;
if (i > 0 && "0".equals(operate.substring(i, i + 1))) {
String sss = number_dw[j];
if (!"0".equals(operate.substring(i - 1, i))
&& !"万".equals(sss)
&& !"亿".equals(sss)
&& !"圆".equals(sss))
upper_str = upper_str + "零";
else if (
"万".equals(number_dw[j])
|| "亿".equals(number_dw[j])
|| "圆".equals(number_dw[j])) {
int ssss = upper_str.length() - 1;
String sssss = upper_str.substring(ssss);
if (!sssss.equals("零")) {
if (!upper_str
.substring(upper_str.length() - 1)
.equals("亿")
&& !upper_str.substring(
upper_str.length() - 1).equals(
"万")) {
if (upper_str
.substring(upper_str.length() - 1)
.equals("拾")
&& !number_dw[j].equals("圆"))
upper_str = upper_str + number_dw[j] + "零";
else
upper_str = upper_str + number_dw[j];
}
} else {
if (!upper_str
.substring(
upper_str.length() - 2,
upper_str.length() - 1)
.equals("亿")
&& !upper_str.substring(
upper_str.length() - 2,
upper_str.length() - 1).equals(
"万")
|| number_dw[j].equals("圆")) {
upper_str =
upper_str.substring(
0,
upper_str.length() - 1)
+ number_dw[j];
if (!number_dw[j].equals("圆")) {
upper_str = upper_str + "零";
}
}
}
}
} else {
if (!operate.substring(i, i + 1).equals("0")) {
int k = Integer.parseInt(operate.substring(i, i + 1));
upper_str =
upper_str + upper_number[k - 1] + number_dw[j];
}
}
}
}
if (point_pos > 0) {
if (!operate.substring(point_pos + 1, point_pos + 2).equals("0")) {
int k =
Integer.parseInt(
operate.substring(point_pos + 1, point_pos + 2));
upper_str = upper_str + upper_number[k - 1] + "角";
if (!operate
.substring(point_pos + 2, point_pos + 3)
.equals("0")) {
int m =
Integer.parseInt(
operate.substring(point_pos + 2, point_pos + 3));
upper_str = upper_str + upper_number[m - 1] + "分";
}
} else {
if (!operate
.substring(point_pos + 2, point_pos + 3)
.equals("0")) {
int k =
Integer.parseInt(
operate.substring(point_pos + 2, point_pos + 3));
upper_str = upper_str + "零" + upper_number[k - 1] + "分";
}
}
}
if (!upper_str.substring(upper_str.length() - 1).equals("分")
&& !upper_str.equals(""))
upper_str = upper_str + "整";
return upper_str;
}