如何在Java源代码中很好地表示大数?

时间:2015-11-17 18:56:16

标签: java

我不想输入65232,而是希望它像65 232那样容易阅读。我应该插入这样的东西来格式化它。

4 个答案:

答案 0 :(得分:1)

You can use underscores代替空格,它将接近你想要的。

int i = 65_232;

这假设您至少使用Java 7。

编译器将其视为下划线不存在,因此您可以将它们(几乎)放置在数字文字内的任何位置,这使您可以自由地设置源代码的格式。

int XD = 0__0;

答案 1 :(得分:0)

尝试这样的事情:

DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols myNumber = formatter.getDecimalFormatSymbols();

symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(myNumber);
System.out.println(formatter.format(bd.longValue()));

source

答案 2 :(得分:0)

Java 7引入了在数字文字中使用下划线(_)的功能。它没有任何意义,只是被Java忽略(例如,1_0010_0100都意味着一百个),但使用它作为可视分隔符非常方便。在您的情况下:int myInt = 65_232;

答案 3 :(得分:0)

在 Java SE 7 及更高版本中,任意数量的下划线字符 (_) 可以出现在数字文本中数字之间的任何位置。例如,此功能使您能够将数字文本中的数字组分开,从而提高代码的可读性。

例如,如果您的代码包含具有多个数字的数字,您可以使用下划线字符将数字分成三组,类似于使用标点符号(如逗号或空格)作为分隔符的方式。

以下示例展示了在数字文字中使用下划线的其他方式:

long creditCardNumber = 1234_5678_9012_3456L;
long socialSecurityNumber = 999_99_9999L;
float pi =  3.14_15F;
long hexBytes = 0xFF_EC_DE_5E;
long hexWords = 0xCAFE_BABE;
long maxLong = 0x7fff_ffff_ffff_ffffL;
byte nybbles = 0b0010_0101;
long bytes = 0b11010010_01101001_10010100_10010010;

您只能在数字之间放置下划线;您不能在以下位置放置下划线:

在数字的开头或结尾
与浮点文字中的小数点相邻
在 F 或 L 后缀之前
在需要一串数字的位置
以下示例演示了数字文字中有效和无效的下划线位置(突出显示):

float pi1 = 3_.1415F;      // Invalid; cannot put underscores adjacent to a decimal point
float pi2 = 3._1415F;      // Invalid; cannot put underscores adjacent to a decimal point
long socialSecurityNumber1
  = 999_99_9999_L;         // Invalid; cannot put underscores prior to an L suffix

int x1 = _52;              // This is an identifier, not a numeric literal
int x2 = 5_2;              // OK (decimal literal)
int x3 = 52_;              // Invalid; cannot put underscores at the end of a literal
int x4 = 5_______2;        // OK (decimal literal)

int x5 = 0_x52;            // Invalid; cannot put underscores in the 0x radix prefix
int x6 = 0x_52;            // Invalid; cannot put underscores at the beginning of a number
int x7 = 0x5_2;            // OK (hexadecimal literal)
int x8 = 0x52_;            // Invalid; cannot put underscores at the end of a number

int x9 = 0_52;             // OK (octal literal)
int x10 = 05_2;            // OK (octal literal)
int x11 = 052_;            // Invalid; cannot put underscores at the end of a number