如何在int内添加空白空间?

7

假设我想打印数字100000000。乍一看,很难知道这个数字代表多少百万。它是1000万还是1亿?如何使Java中的大数更易读?类似于这样的东西会很棒:100 000 000。您可以立即确定该数字为1亿。


你可以使用下划线表示大数字。 - Masudul
@Masud OP希望在打印数字时添加空格,而不是在源代码中添加。 - Turing85
5
https://docs.oracle.com/javase/tutorial/java/data/numberformat.html - bobwah
@Turing85,他问了一个问题,类似于“如何让Java中的大数字看起来更易读?” - Masudul
假设我想打印数字100000000。 - Sing Sandibar
7个回答

10

您也可以尝试使用 DecimalFormat;

DecimalFormat formatter = new DecimalFormat("#,###");
System.out.println(formatter.format(100000));

结果:

1000>>1,000
10000>>10,000
100000>>100,000
1000000>>1,000,000

4
你可以尝试像这样做:

你可以尝试像这样做:

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

3
使用 DecimalFormat 类,点击链接了解如何使用。
为了节省您的搜索时间,我已经写出了您基本需要的内容。
DecimalFormat myFormatter = new DecimalFormat("### ### ###");
String output = myFormatter.format(value);
System.out.println(output);

2
你可以使用十进制格式来格式化字符串。
    DecimalFormat decimalFormat = new DecimalFormat("###,###,###");
    System.out.println(decimalFormat.format(100000000));

这将打印100,000,000。
对于其他输入 - 比如1000,它会打印1,000。

2
使用已经建议的DecimalFormat几乎是你所需要的一切。为了获得你所要求的确切结果,比如说用空格分隔千位等,你需要将其与DecimalFormatSymbols结合使用,例如:

最初的回答:
使用已经建议的DecimalFormat,几乎就可以满足需求了。如果想要实现空格分隔千位等效果,需要与DecimalFormatSymbols结合使用,示例代码如下:
DecimalFormatSymbols customSymbols = DecimalFormatSymbols.getInstance(Locale.US); 
customSymbols.setGroupingSeparator(' '); 
new DecimalFormat("#,###;-#,###", customSymbols).format(value);

"#,###;-#,###" 中的分号用于分隔正数和负数(必须分别定义,否则所有数字都将转换为正数!)

冒号用于指定数字的位数分隔符(在此示例中每3个数字一个分隔符)。

例如:

value=12345678

最初的回答是:输出将会是。
12 345 678

0

你可能只需要使用字符串来处理这个问题。如果你需要进行一些计算,可以将其保留为整数,直到需要打印出来时再将其转换为字符串,处理字符串使其易读,并打印出来。


0
以下方法怎么样,但是在Java 7及更高版本中支持它:

int twoMillion = 2_000_000;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接