2012-05-21 4 views
1

Спасибо, что нашли время ответить на мой вопрос.Сложность синтаксического анализа двойного - Строка

У меня есть значение double (скажем, 22.35). Мне нужно разобрать его в String и получить 2235. Следующий код работает неправильно.

double totalPrice = 22.35; 
DecimalFormat df = new DecimalFormat("#.##"); 
String[] temp = df.format(totalPrice).split("."); 
String amount = temp[0] + temp[1]; 

Я продолжаю получать исключение ArrayIndexOutOfBounds. Каков другой способ сделать это? Заранее спасибо!

+5

'int totalCents = (int) (22.35d * 100);' –

+0

@AndrewThompson - Похож на меня, возможно, на предложение или два для объяснения. +1 – jmort253

+0

Почему бы вам просто не заменить символ точки пустым? –

ответ

4

Если значения не превышают, после умножения на 100, MAX_INT, умножать:

double totalPrice = 22.35; 
int iPrice = (int) (totalPrice * 100); 
String sPrice = "" + iPrice; 
+0

@AndrewThompson: Извините, забыл бросить. –

+1

Хорошее редактирование ... +1 –

+0

@userunknown - Поздравляем с 10k! – jmort253

0

насчет:

double totalPrice = 22.35; 
DecimalFormat df = new DecimalFormat("#.##"); 
String price = df.format(totalPrice).replace(".", ""); 
0

Может быть, вы можете сделать это следующим образом: просто изменить regex "." на "\."!

String[] temp = df.format(totalPrice).split("\\."); 
0

Это не будет работать независимо от того, как высоко числа, которое вы пытаетесь применить его к:

double num = 22.35; 
String concatenate = "" + num; 
String parsedNum = concatenate.replace(".", ""); 

Надеется, что это помогает вам.

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