2016-01-30 166 views
-1

我一直在嘗試將值轉換爲十進制,如RM108.00。我用 方法value = String.format("%.2f", curProduct.price);和它的作品, 但是當我想
申請value * ShoppingCartActivity.getProductQuantity(curProduct),它說 是operator * cannot applied to java.lang.string。我如何解決這個 問題?我應該如何使總價格變成2位小數?如何解決「運算符*不能應用於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)返回什麼? –

+0

是不是你的值變量是一個字符串? –

+0

你正在嘗試在字符串上執行數學! –

回答

1

這意思是,以下兩種方法之一是一個字符串,而不是一個數字:

  • curProduct.price
  • ShoppingCartActivity.getProductQuantity(curProduct)

您可以將它們轉換爲整數(或浮點數,如果有小數)使用以下代碼:

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

這也可能是值得考慮的地方,這些價值的定義,並確保使用整數/儘可能漂浮,因爲轉換可能需要一些時間。整數應該總是用於整數(如果它們不是非常大),浮點或雙精度應該用於十進制數。除非你確切知道你在做什麼,否則不要使用字符串作爲數字。

0

那是因爲String.format()給你一個格式化String而不是任何其他格式的你所期望的數據類型,你不能(如+)操作字符串算術運算符。你爲什麼不嘗試使用

  • Double.parseDouble(value)解析所有字符串數據類型爲double
  • Float.parseFloat(value)float
  • Integer.parseInt(value)int

,然後執行算術運算。

相關問題