2012-05-03 3 views
1

Я использую класс DecimalFormat для форматирования чисел для строк и наоборот.DecimalFormat - без разделителя десятичных чисел

В моей базе данных Java doubles представлены определенным образом: например, 128.88 хранится «00012888». Для этого я использую шаблон «00000.00» и удаляю «.». десятичный разделитель после форматирования, который не является интеллектуальным решением.

Есть ли способ сказать DecimalFormat, чтобы не использовать какой-либо десятичный разделитель? Могу ли я понять, где целая часть и часть дроби в строке, представляющей десятичное число?

Я бы предпочел не размножать, делить, обрезать или делать округления перед преобразованиями. Есть ли волшебный шаблон для этого? Или класс DecimalFormat не такой гибкий?

Я точно не могу использовать метод String.format(), потому что я работаю на платформе Java 1.4.

Благодарим за помощь.

+0

Не можете вы изменить столбец базы данных в 'DECIMALS (9, 2)'? По-прежнему будет храниться без точек и быть более нормальным. Кроме того, BigDecimal очень неудобен, но лучше, чем двойной. Вы можете сделать представление с правильным определением столбца и просто getDouble или getBigDecimal. –

+0

нет, несчастливо. Но BigDecimal кажется неплохим решением. Благодаря ! – mishka

ответ

0

DecimalFormat не достаточно для этого.

Вы можете использовать этот метод следующим образом:

double getD(String fixedWidthNumber) { 
    return Double.valueOf(fixedWidthNumber.substring(0,6)+"."+fixedWidthNumber.substring(6,8)); 
} 
0
BigDecimal value = new BigDecimal("234.33"); 
DecimalFormat decFrm = new DecimalFormat("000.00"); 
char decSep = decFrm.getDecimalFormatSymbols().getDecimalSeparator(); 
String resultStr = decFrm.format(value).replace(Character.toString(decSep), ""); 

результат: 3423433

Смежные вопросы