我一直在尝试将值转换为十进制,例如RM108.00。我用过
方法value = String.format("%.2f", curProduct.price);
并且它有效,
但是当我想要
它说,申请value * ShoppingCartActivity.getProductQuantity(curProduct)
operator * cannot applied to java.lang.string
。我该如何解决这个问题
问题?我应该如何将总价格变为2位小数?
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));
}
答案 0 :(得分:2)
这意味着以下两种方法之一是字符串,而不是数字:
curProduct.price
ShoppingCartActivity.getProductQuantity(curProduct)
您可以使用以下代码将它们转换为整数(或浮点数,如果其中有小数):
Integer.parseInt(curProduct.price);
Float.parseFloat(curProduct.price);
可能还值得查看这些值的定义位置,并确保尽可能使用整数/浮点数,因为转换可能需要一些时间。应始终将整数用于整数(如果它们不是非常大),则应使用浮点数或双精度数作为十进制数。除非你确切知道自己在做什么,否则不要使用字符串作为数字!
答案 1 :(得分:1)
这是因为String.format()
为您提供了格式化的String
,而不是您期望的任何其他格式化数据类型,并且您无法在字符串上操作算术运算符(例如+
)。为什么不尝试使用
Double.parseDouble(value)
double
{li> Float.parseFloat(value)
float
{li> Integer.parseInt(value)
int
然后执行算术运算。