如何在 int 中添加空 space?
How to add empty space inside int?
假设我要打印数字 100000000。乍一看很难说出这个数字代表多少百万。是1000万还是1亿?如何使 Java 中的大数字看起来更具可读性?例如这样的东西会很棒:100 000 000
。一看就知道是1亿
您可能只想为此使用一个字符串。如果您需要进行一些计算,只需将其保留为 int 直到需要打印为止。然后当需要打印时将其转换为字符串,处理字符串,使其具有您想要的可读性,然后打印它。
你可以这样试试:
String.format("%.2fM", yourNumber/ 1000000.0);
这将以
格式显示数字
1,000,000 => 1.00M
1,234,567 => 1.23M
编辑:-
我知道这是一个迟到的编辑,但是是的,还有另一种方法:
private static String[] suff = new String[]{"","k", "m", "b", "t"};
private static int MAX_LENGTH = 4;
private static String numberFormat(double d) {
String str = new DecimalFormat("##0E0").format(d);
str = str.replaceAll("E[0-9]", suff[Character.getNumericValue(str.charAt(str.length() - 1)) / 3]);
while(str.length() > MAX_LENGTH || str.matches("[0-9]+\.[a-z]")){
str = str.substring(0, str.length()-2) + str.substring(str.length() - 1);
}
return str;
}
调用这个函数,你会得到如下输出:
201700 = 202k
3000000 = 3m
8800000 = 8.8m
您也可以试试 DecimalFormat;
DecimalFormat formatter = new DecimalFormat("#,###");
System.out.println(formatter.format(100000));
结果:
1000>>1,000
10000>>10,000
100000>>100,000
1000000>>1,000,000
您可以使用十进制格式来格式化字符串
DecimalFormat decimalFormat = new DecimalFormat("###,###,###");
System.out.println(decimalFormat.format(100000000));
这将打印 100,000,000
对于其他输入 - 假设 1000 它将打印 1,000
使用DecimalFormatclass,使用方法见link
为了节省您的搜索时间,我已经写下了您基本需要的内容
DecimalFormat myFormatter = new DecimalFormat("### ### ###");
String output = myFormatter.format(value);
System.out.println(output);
下面的方法怎么样,但是 it's supported 在 Java 7 和更高版本中:
int twoMillion = 2_000_000;
如前所述,使用 DecimalFormat 几乎可以满足您的所有需求。要获得您要求的确切结果,例如 space 分隔的千位等等,您需要将其与 DecimalFormatSymbols 组合,例如:
DecimalFormatSymbols customSymbols = DecimalFormatSymbols.getInstance(Locale.US);
customSymbols.setGroupingSeparator(' ');
new DecimalFormat("#,###;-#,###", customSymbols).format(value);
; "#,###;-#,###"中的分号分隔正数和负数(必须单独定义,否则最后会全部转换为正数!)
, 冒号指向分隔数字的位置(本例中每3位)。
例如,
value=12345678
输出将是
12 345 678
假设我要打印数字 100000000。乍一看很难说出这个数字代表多少百万。是1000万还是1亿?如何使 Java 中的大数字看起来更具可读性?例如这样的东西会很棒:100 000 000
。一看就知道是1亿
您可能只想为此使用一个字符串。如果您需要进行一些计算,只需将其保留为 int 直到需要打印为止。然后当需要打印时将其转换为字符串,处理字符串,使其具有您想要的可读性,然后打印它。
你可以这样试试:
String.format("%.2fM", yourNumber/ 1000000.0);
这将以
格式显示数字1,000,000 => 1.00M
1,234,567 => 1.23M
编辑:-
我知道这是一个迟到的编辑,但是是的,还有另一种方法:
private static String[] suff = new String[]{"","k", "m", "b", "t"};
private static int MAX_LENGTH = 4;
private static String numberFormat(double d) {
String str = new DecimalFormat("##0E0").format(d);
str = str.replaceAll("E[0-9]", suff[Character.getNumericValue(str.charAt(str.length() - 1)) / 3]);
while(str.length() > MAX_LENGTH || str.matches("[0-9]+\.[a-z]")){
str = str.substring(0, str.length()-2) + str.substring(str.length() - 1);
}
return str;
}
调用这个函数,你会得到如下输出:
201700 = 202k
3000000 = 3m
8800000 = 8.8m
您也可以试试 DecimalFormat;
DecimalFormat formatter = new DecimalFormat("#,###");
System.out.println(formatter.format(100000));
结果:
1000>>1,000
10000>>10,000
100000>>100,000
1000000>>1,000,000
您可以使用十进制格式来格式化字符串
DecimalFormat decimalFormat = new DecimalFormat("###,###,###");
System.out.println(decimalFormat.format(100000000));
这将打印 100,000,000
对于其他输入 - 假设 1000 它将打印 1,000
使用DecimalFormatclass,使用方法见link
为了节省您的搜索时间,我已经写下了您基本需要的内容
DecimalFormat myFormatter = new DecimalFormat("### ### ###");
String output = myFormatter.format(value);
System.out.println(output);
下面的方法怎么样,但是 it's supported 在 Java 7 和更高版本中:
int twoMillion = 2_000_000;
如前所述,使用 DecimalFormat 几乎可以满足您的所有需求。要获得您要求的确切结果,例如 space 分隔的千位等等,您需要将其与 DecimalFormatSymbols 组合,例如:
DecimalFormatSymbols customSymbols = DecimalFormatSymbols.getInstance(Locale.US);
customSymbols.setGroupingSeparator(' ');
new DecimalFormat("#,###;-#,###", customSymbols).format(value);
; "#,###;-#,###"中的分号分隔正数和负数(必须单独定义,否则最后会全部转换为正数!)
, 冒号指向分隔数字的位置(本例中每3位)。
例如,
value=12345678
输出将是
12 345 678