2016-01-30 2 views
-1

Я пытался преобразовать значение в десятичное число, такое как RM108.00. Я использовал метод value = String.format("%.2f", curProduct.price); и он работает, , но когда я хочу
применять value * ShoppingCartActivity.getProductQuantity(curProduct), он говорит, что operator * cannot applied to java.lang.string. Как решить эту проблему ? Как мне сделать общую цену на 2 десятичных?Как решить «operator * нельзя применить к java.lang.string»?

item.productPrice = (TextView) convertView 
       .findViewById(R.id.textViewTotal); 

    value = String.format("%.2f", curProduct.price); 

    if (mShowPrice) { 
     item.productPrice.setText("Total Price: " + 
    String.valueOf(curProduct.price * 
    ShoppingCartActivity.getProductQuantity(curProduct))); 
    } else{ 
     item.productPrice.setText("RM" + String.valueOf(value)); 
    } 
+5

Что такое ShoppingCartActivity.getProductQuantity (curProduct) return? –

+0

Разве ваша переменная значения не является строкой? –

+0

Вы пытаетесь выполнить математику по строкам !! –

ответ

1

Что это означает, что один из двух следующих методов является строка, а не номер:

  • curProduct.price
  • ShoppingCartActivity.getProductQuantity(curProduct)

Вы можете преобразовать их в целое число (Или float, если в нем есть десятичное число), используя следующий код:

  • Integer.parseInt(curProduct.price);
  • Float.parseFloat(curProduct.price);

Он также может быть стоит посмотреть на то, где определены эти значения, и убедившись, что использовать целые числа/плавает всякий раз, когда это возможно, поскольку преобразование может занять некоторое время. Целые числа всегда должны использоваться для целых чисел (если они не очень велики), а для десятичных чисел следует использовать поплавки или удвоения. Не используйте строки для чисел, если вы точно не знаете, что делаете!

0

Это потому, что String.format() дает вам форматированный String, а не какой-либо другой тип данных отформатированный вы ожидаете, и вы не можете управлять арифметические операторы (например, +) на нитях. Почему бы вам не попытаться разобрать все строки в типы данных с помощью

  • Double.parseDouble(value) для double
  • Float.parseFloat(value) для float
  • Integer.parseInt(value) для int

, а затем выполнять арифметические операции.

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