Как преобразовать строковые числа в целые числа через запятую в Java? - PullRequest
7 голосов
/ 22 июня 2011

Может ли кто-нибудь дать мне несколько предопределенных методов или пользовательских методов для преобразования строковых чисел (пример: 123455) в целочисленное значение через запятую (пример: 1,23,455).

Ответы [ 6 ]

9 голосов
/ 22 июня 2011
int someNumber = 123456;
NumberFormat nf = NumberFormat.getInstance();
nf.format(someNumber);
3 голосов
/ 22 июня 2011

используйте java.text.NumberFormat, это решит вашу проблему.

1 голос
/ 23 июня 2011

Наконец-то я нашел точное решение для своих нужд.

import java.math.*;
import java.text.*;
import java.util.*;
public class Mortgage2 {
    public static void main(String[] args) {
        BigDecimal payment = new BigDecimal("1115.37");
        NumberFormat n = NumberFormat.getCurrencyInstance(Locale.US); 
        double doublePayment = payment.doubleValue();
        String s = n.format(doublePayment);
        System.out.println(s);
    }
}
0 голосов
/ 22 июня 2011

Результат, который вы ожидали, что "разделенный запятыми целое число значение", на мой взгляд, неверен. Однако, если вы просто ищете выходное представление , как насчет этих строк кода, показанных ниже? (Обратите внимание, вы не можете анализировать возвращаемое значение из valueToString в некоторый тип данных long, потому что это просто не имеет смысла :))

MaskFormatter format = new MaskFormatter("#,##,###");
format.setValueContainsLiteralCharacters(false);
System.out.println(format.valueToString(123455));
0 голосов
/ 22 июня 2011

Я полагаю, 123455 является String.

String s = 123455;
String s1 = s.substring( 0 , 1 );  // s1 = 1 
String s2 = s.substring( 1 , 3 );  // s2 = 23
String s3 = s.substring( 2 , 7 );  // s3 = 455
s1 = s1 + ',';
s2 = s2 + ',';
s = s1 + s2;   // s is a String equivalent to 1,23,455 

Теперь мы используем метод static int parseInt(String str) для преобразования строки в целое число. Этот метод возвращает целочисленный эквивалент числа, содержащегося в String, указанного в str с использованием радиуса 10.

Здесь вы не можете конвертировать s ---> int. Поскольку int не имеет запятых. Если вы попытаетесь преобразовать, вы получите следующее исключение java.lang.NumberFormatException

Вы должны использовать DecimalFormat Класс. http://download.oracle.com/javase/1.4.2/docs/api/java/text/DecimalFormat.html

0 голосов
/ 22 июня 2011

Что вам нужно, так это класс DecimalFormat ( здесь ), где вы можете легко установить разделитель и преобразовать строку в число, например, методом parse().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...