本来想网上找个例子,结果让人很失望,网上的大部分用的DecimalFormat 、NumberFormat,我随便搞了一个长点的字符串,发现大部分都有小数进度问题。
而且网上的人,都不测试的,写的例子明显不打算在生产上跑,所以还是自己写了一个。
package com.test; import java.text.ParseException; import java.util.ArrayList; public class FormatNumber { /** * @Title: addThousandSeparator * @Description: 格式化数字为千分位 * @param text * @return 设定文件,由于double的位数有限制,所以这里自己拆分的方式来做。 * @return String 返回类型 */ public static String addThousandSeparator(String text) { if (text == null) { return null; } int index = text.indexOf("."); if (index > 0) { String integerPartial = text.substring(0, index); String decimalPartial = text.substring(index); return addThousandSeparatorForInteger(integerPartial) + decimalPartial; } else { return addThousandSeparatorForInteger(text); } } // 只给整数加千分位分隔符 public static String addThousandSeparatorForInteger(String text) { int index = text.indexOf("."); if (index != -1) { return text; } else { int length = text.length(); ArrayList<String> stringContainer = new ArrayList<String>(); while (length > 3) { stringContainer.add(text.substring(length - 3, length)); length = length - 3; } stringContainer.add(text.substring(0, length)); // 将最前面的小于三个数字的也加入到数组去 StringBuffer buffer = new StringBuffer(); for (int i = stringContainer.size() - 1; i >= 0; i--) { buffer.append(stringContainer.get(i) + ","); } buffer.deleteCharAt(buffer.length() - 1); return buffer.toString(); } } public static void main(String[] args) throws ParseException { System.out.println(FormatNumber.addThousandSeparator(".331234567")); System.out.println("length:" + "1324678881122.331234567".length()); System.out.println("index:" + "1324678881122.331234567".indexOf(".")); System.out.println(FormatNumber.addThousandSeparator("1324678881122.331234567")); /** * 结果如下: length:23 index:13 1,324,678,881,122.331234567 */ System.out.println("length:" + "1324678881122.331234567".length()); System.out.println("index:" + "1324678881122.331234567".indexOf(".")); System.out.println(FormatNumber.addThousandSeparator("1324678881122")); System.out.println(FormatNumber.addThousandSeparator("324678881122")); System.out.println(FormatNumber.addThousandSeparator("22")); System.out.println(FormatNumber.addThousandSeparator("")); System.out.println(FormatNumber.addThousandSeparator(" ")); System.out.println(FormatNumber.addThousandSeparator(".331234567")); System.out.println(FormatNumber.addThousandSeparator("0.331234567")); System.out.println(FormatNumber.addThousandSeparator(null)); } }