Преобразовать строку в число с плавающей точкой в ​​Java - PullRequest
3 голосов
/ 23 февраля 2012

Я пытаюсь преобразовать строку pprice в число с плавающей запятой. Однако атрибут цены объекта (тип с плавающей точкой) устанавливается равным 0,00 .. Может кто-нибудь сказать мне, что не так?

String pprice="60.0"
String tokens[]=pprice.split(".");
if(tokens.length>=2)
{
    int a=Integer.parseInt(tokens[0]);
    int b=Integer.parseInt(tokens[1]);
    float a1=(float)a;
    float b1=(float)b;
    Float price=a1+(b1/100);
    prod.setProductPrice(price);
}
else if(tokens.length==1)
{
    int a=Integer.parseInt(tokens[0]);
    float a1=(float)a;
    prod.setProductPrice(a1);
}

Ответы [ 5 ]

7 голосов
/ 23 февраля 2012

Используйте Double.parseDouble (string) или Float.parseFloat (string);

5 голосов
/ 23 февраля 2012

Ваша проблема здесь:

    String tokens[]=pprice.split(".");

Аргумент для разделения - это регулярное выражение, и "."является регулярным выражением, которое соответствует любому отдельному символу .Чтобы сопоставить только точку, вам нужно экранировать ее с обратной косой чертой, а поскольку обратная косая черта также является особенной, вам нужно удвоить ее.

    String tokens[]=pprice.split("\\.");

Измените это, и ваш код должен работать.1010 * Возможно, вам лучше использовать один из методов разбора, упомянутых в других ответах.

2 голосов
/ 23 февраля 2012

Почему бы вам не использовать что-то вроде:

float price = Float.valueOf(pprice.trim());

(эквивалентно Float.parseFloat (string))

2 голосов
/ 23 февраля 2012

Давайте попробуем float.parseFloat("60.0"); или Double.parseDouble("60.0");

1 голос
/ 23 февраля 2012
float urfloat=Float.parseFloat(String string)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...