参考地址:http://bbs.csdn.net/topics/390554651?page=1#post-395338691
看评论!
package threadTest;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class MyThread1 {
public static void main(String[] args) {
System.out.println("方法一:*****************************");
NumberFormat nf = new DecimalFormat("###,###.##");
String[] price = new String[3];
price[0] = "23445.78";
price[1] = "34323445.78";
price[2] = "222222234323445.78";
for(String str : price){
System.out.println(nf.format(Double.valueOf(str)));;
}
System.out.println("方法二:*****************************");
String num = "-1232354234.1254215325";
System.out.println(convert(num));
}
public static String convert(String num) {
if (num == null || !num.matches("\\-?\\d+\\.?\\d+"))
throw new IllegalArgumentException("number is invalid");
int index = num.indexOf(".");
int end = num.startsWith("-") ? 1 : 0;
StringBuilder temp = new StringBuilder(num);
for (int i = (index == -1 ? temp.length() : index) - 3; i > end; i -= 3) {
temp.insert(i, ',');
}
return temp.toString();
}
}
运行结果:
方法一:*****************************
23,445.78
34,323,445.78
222,222,234,323,445.78
方法二:*****************************
-1,232,354,234.1254215325
方法一中,也有部分缺点,如果小数点后面位数很多的话,就会四舍五入,这个地方由
NumberFormat nf = new DecimalFormat("###,###.##");
决定的!
方法二中,思路很清晰,所有的实现都是自己写的。
善于对类库的使用,很多事情就简单很多了!