给定一个合法的数,返回带千字符逗号分隔的数据。
说明:
1、包括正负整数
2、可以考虑正负浮点数。如果给定的数带小数点,从小数点开始往左边方向,每隔三个数字增加一个逗号,小数点向右方向每隔三个数字增加一个小数点。
示例1:
给定正整数输入:1234567
输出:1,124,567
示例2:
给定负整数输入:-25896
输出:-25,896
示例3:
给定正整数输入:1234567.36958
输出:1,124,567.369,58
示例4:
给定负整数输入:-25896.4521897
输出:-25,896.452,189,7
public class Separator {
public static void main(String[] args) {
System.out.println(getSeparator(1234567));
System.out.println(getSeparator(-25896));
System.out.println(getSeparator(1234567.36958));
System.out.println(getSeparator(-25896.4521897));
System.out.println(getSeparator(-1234576));
System.out.println(getSeparator(-1234574.12845));
System.out.println(getSeparator(-1234572));
System.out.println(getSeparator(-1234598d));
}
public static String getSeparator(int nums) {
if (nums == 0) {
return "0";
}
boolean lsZero = nums < 0;
String n = String.valueOf(lsZero ? -nums : nums);
StringBuilder sb = new StringBuilder();
sb.append(getSeparator(n , false));
return lsZero ? "-" + sb.toString() : sb.toString();
}
public static String getSeparator(String nums , boolean isDouble) {
String n = String.valueOf(nums);
char[] arr = n.toCharArray();
if (arr != null && arr.length != 0) {
StringBuilder sb = new StringBuilder();
int length = arr.length;
if (isDouble) {
for (int i=0; i<length; i++) {
if (i!=0 && i%3==0) {
sb.append(",");
}
sb.append(arr[i]);
}
} else {
for (int i=length-1,j=0;i>=0;i--,j++) {
if (j!=0 && j%3==0) {
sb.append(",");
}
sb.append(arr[i]);
}
}
return isDouble ? sb.toString():sb.reverse().toString();
} else {
return "0";
}
}
public static String getSeparator(double nums) {
if (nums == 0) {
return "0";
}
boolean lsZero = nums < 0;
String n = String.valueOf(lsZero ? -nums : nums);
boolean isDouble = n!=null && n.contains(".");
StringBuilder sb = new StringBuilder();
if (isDouble) {
// System.out.println(n);
String[] arr = n.split("\\.");
sb.append(getSeparator(arr[0] , false));
sb.append(".");
sb.append(getSeparator(arr[1] , true));
} else {
sb.append(getSeparator(n , false));
}
return lsZero ? "-" + sb.toString() : sb.toString();
}
}
可以考虑取余1000