JAVA里面如何格式化数字

2024-11-24 09:30:59
推荐回答(3个)
回答1:

楼主你好!给你写了个测试类希望能帮助你。这两个个方法只需要传入你要格式话的数据,就可以返回你想要的结果了。 package com.line;public class T9 {
/**
* 格式化一般数据为财务格式,eg:123,456,789.00
*
* @param source
* String
* @return String
*/
public static String getCaiWuData(String source) {
StringBuffer str = new StringBuffer("");
if (source != null && !source.equals("") && source.length() > 0
&& !source.equals("null")) {
if (source.lastIndexOf(",") > 0) {
source =formatStr(source);
}
int dotIndex = 0;
if (source.indexOf(".") < 0) {
source += ".00";
}
dotIndex = source.indexOf(".");
int index = 0;
String opt = "";
opt = source.substring(0, 1);
if (opt.equals("-")) {
source = source.substring(1);
str.append("-");
dotIndex = source.indexOf(".");
}
if (dotIndex < 3) {
index += 1;
str.append(source.substring(0, dotIndex));
}
if (dotIndex % 3 == 0) {
index += dotIndex / 3;
} else {
index += (dotIndex - dotIndex % 3) / 3;
}
if (index > 0 && dotIndex >= 3) {
for (int i = index; i > 0; i--) {
if (i == index) {
str.append(source.substring(0, dotIndex - i * 3));
}
if (dotIndex - i * 3 > 0) {
str.append(",");
}
if (i >= 1) {
str.append(source.substring(dotIndex - i * 3, dotIndex
- (i - 1) * 3));
}
}
}
str.append(source.substring(dotIndex));
}
if (source.length() - source.lastIndexOf(".") < 3) {
str.append("0");
}
int dot_index = str.toString().indexOf(".") + 2;
int str_len = str.toString().length();
char[] strArr = str.toString().toCharArray();
StringBuffer rev = new StringBuffer();
for (int i = str_len - 1; i > 0; i--) {// 除去尾数0,小数点后保留2位
if (i > dot_index
&& Integer.parseInt(new Character(strArr[i]).toString()) > 0) {
rev.append(str.toString().substring(0, i + 1));
break;
} else if (i == dot_index && (int) strArr[i] >= 0) {
rev.append(str.toString().substring(0, dot_index + 1));
break;
}
}
return rev.toString();
}
/**
* 格式化财务数据为一般字符串,eg:123456789.00
*
* @param source
* String
* @return String
*/
public static String formatStr(String source) {
StringBuffer str = new StringBuffer("");
if (source != null && !source.equals("") && source.length() > 0
&& !source.equals("null")) {
String temp = source.substring(0, 1);
if (temp.equals("-")) {
source = source.substring(1);
str.append("-");
}
String[] myarr = source.split(",");
int lastIndex = source.lastIndexOf(",");
if (lastIndex > 0) {
for (int i = 0; i < myarr.length; i++) {
str.append(myarr[i]);
}
}
if (source.lastIndexOf(",") < 0) {
str.append(source);
}
if (source.lastIndexOf(".") < 0) {
str.append(".00");
}
if (source.length() - source.lastIndexOf(".") < 3
&& !"0".equals(source)) {
str.append("0");
}
} else {
return (str.append("0.00").toString());
}
return str.toString();
}
/**
* @param args
*/
public static void main(String[] args) {
T9 t=new T9();
System.out.println(t.getCaiWuData("1231313"));
System.out.println(t.formatStr("1,231,313.00"));
}}

回答2:

java提供了格式化double类型的方法:NumberFormat.getInstance().format(a);这个是java内置的函数可以直接格式化double类型的数字;NumberFormat要导入import java.text.NumberFormat;即可。

回答3:

import java.text.DecimalFormat;
class FormatDemo{
public void format(String pattern,double value){
DecimalFormat df = null;
df = new DecimalFormat(pattern);
String str = df.format(value);
System.out.println("使用"+pattern+"格式化数字"+value+": "+str);
}
}
public class Test11_8 {
public static void main(String[] args) {
FormatDemo demo = new FormatDemo();
demo.format("###,###,###.###",11122234.567); }}