парсинг значения строки из файла в число с плавающей точкой, где строка содержит запятую - PullRequest
4 голосов
/ 30 ноября 2011

У меня есть входной файл, входящий в мое приложение, с некоторыми значениями цен на товары в каждой строке.

Однако, когда цена выше 999,99, значения содержатся в соответствующем месте.

1,000.00
5,432.89

и т. Д.

1) Есть ли установленное правило о размещении запятой в значениях валюты?На каком основании определяется место запятой?

2) Есть ли библиотечный метод для анализа таких строковых значений с плавающей / двойной?

1 Ответ

5 голосов
/ 30 ноября 2011

Вы можете использовать DecimalFormat для анализа и форматирования десятичных чисел.

Запятые есть для тысяч разделителей. Вот простой пример, который намеренно анализирует BigDecimal, а не float или double - двоичная плавающая точка не подходит для валютных значений.

import java.math.*;
import java.text.*;

public class Test {
    public static void main(String[] args) throws Exception {
        DecimalFormat format = new DecimalFormat();
        format.setParseBigDecimal(true);
        BigDecimal value = (BigDecimal) format.parse("1,234.56");
        System.out.println(value);
    }
}

Теперь это просто использует языковой стандарт по умолчанию для таких вещей, как разделитель тысяч и десятичный разделитель - вы можете указать конкретный языковой стандарт, если вы знаете, что будет использоваться для файла, который необходимо проанализировать.

...