Java 方法将逗号插入到大数字中
是否有一个已经存在的方法,如果没有,是否可以编写一个可以格式化大数字并在其中插入逗号的方法Java 方法将逗号插入到大数字中,java,number-formatting,Java,Number Formatting,是否有一个已经存在的方法,如果没有,是否可以编写一个可以格式化大数字并在其中插入逗号的方法 100 = 100 1000 = 1,000 10000 = 10,000 100000 = 100,000 1000000 = 1,000,000 public String insertCommas(Integer largeNumber) { } 你看过(摘要NumberFormat的派生词)了吗?您可以根据需要更改格式 DecimalFormat myFormatt
100 = 100
1000 = 1,000
10000 = 10,000
100000 = 100,000
1000000 = 1,000,000
public String insertCommas(Integer largeNumber) {
}
你看过(摘要NumberFormat
的派生词)了吗?您可以根据需要更改格式
DecimalFormat myFormatter = new DecimalFormat("###,###.###");
String output = myFormatter.format(value);
还请注意,您可以根据区域设置确定格式。您是否尝试过
java.text.NumberFormat
?您可以使用:
区域设置对象表示特定的地理、政治或地理位置
文化区。需要区域设置才能执行其操作的操作
该任务称为区域设置敏感任务,并使用该区域设置进行定制
为用户提供的信息。例如,显示一个数字是一个简单的过程
区域设置敏感操作-应根据
用户所在国家、地区的风俗习惯,
或文化
这将打印:
10,000,000
旁注:在Java 7中,您可以编写带下划线的
int
:1_000_000。使用NumberFormat
您可以轻松完成以下操作:
NumberFormat format = NumberFormat.getInstance(Locale.US);
System.out.println(format.format(100));
System.out.println(format.format(1000));
System.out.println(format.format(1000000));
将输出:
100
1,000
1,000,000
我试着非常清楚我在做什么,这可以用更少的行来完成 算法很简单,我反转输入字符串,然后使用正则表达式分割数字,在每个匹配中添加逗号 如果模块3的数字大小为零(例如123456),则必须删除最后一个逗号 现在我们通过再次反转来恢复原始字符串顺序,瞧
public String insertCommas(Integer largeNumber) {
String result;
String reversedNum = new StringBuilder(""+largeNumber).reverse().toString();
String reversedResult = "";
Pattern pattern = Pattern.compile("\\d{3}");
Matcher matcher = pattern.matcher(reversedNum);
int lastIndex = reversedNum.length();
while(matcher.find()){
reversedResult += matcher.group()+",";
lastIndex = matcher.end();
}
String remaining = reversedNum.substring(lastIndex);
reversedResult += remaining;
result = new StringBuilder(reversedResult).reverse().toString();
if(remaining.isEmpty()){
result = new StringBuilder(reversedResult).reverse().toString().substring(1);
}else{
result = new StringBuilder(reversedResult).reverse().toString();
}
return result;
}
哈哈,我以为他想做些家庭作业。顺便说一下,正确的方法是使用NumberFormat
public String insertCommas(Integer largeNumber) {
String result;
String reversedNum = new StringBuilder(""+largeNumber).reverse().toString();
String reversedResult = "";
Pattern pattern = Pattern.compile("\\d{3}");
Matcher matcher = pattern.matcher(reversedNum);
int lastIndex = reversedNum.length();
while(matcher.find()){
reversedResult += matcher.group()+",";
lastIndex = matcher.end();
}
String remaining = reversedNum.substring(lastIndex);
reversedResult += remaining;
result = new StringBuilder(reversedResult).reverse().toString();
if(remaining.isEmpty()){
result = new StringBuilder(reversedResult).reverse().toString().substring(1);
}else{
result = new StringBuilder(reversedResult).reverse().toString();
}
return result;
}