我是C#的新手,刚开始学习如何编码。我试图转换并总结标签中显示的几个项目的金额,然后在另一个标签中显示总数。我使用解析将值转换为double,但我经常收到一条错误消息,说明&#34 ;不能隐式地将int类型转换为string.Here是我的代码示例。
int Cost;
double total = 0;
costLabel.Text = Convert.ToInt32(priceLabel2.Text);
Cost = int.Parse(priceLabel2.Text);
total += double.Parse(priceLabel2.Text);
costLabel.Text = total.ToString("c");
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
请注意类型;你的代码修改了:
// Are you sure that price is integer? What about 4.95$?
// More natural choice is double (decimal is the best for the currency)
double Cost;
// Let's preserve double (but decimal is a better choice)
double total = 0;
// string assigned to string; no Convert.ToInt32
// It's useless line, however, since costLabel.Text = total.ToString("c");
// will rewrite the label
costLabel.Text = priceLabel2.Text;
// Since cost is not an integer value
Cost = double.Parse(priceLabel2.Text);
// You don't want to parse twice
total += Cost;
costLabel.Text = total.ToString("c");
更好的选择是使用decimal
作为货币:
decimal total = 0m;
//TODO: it seem's that you want to add some logic here; otherwise total == cost
decimal cost = decimal.Parse(priceLabel2.Text);
total += cost;
costLabel.Text = total.ToString("c");
答案 1 :(得分:0)
问题在于costLabel.Text = Convert.ToInt32(priceLabel2.Text);
行。你有很多不必要的代码,所以它们都可以简化为以下内容:
double total = double.Parse(priceLabel2.Text);
costLabel.Text = total.ToString("c");
答案 2 :(得分:0)
您将整数分配给字符串,但这些字符串不起作用。您还在同一输入上执行多个操作。对于货币,您必须使用4
,因为这是一种更安全(更精确)的数据类型。
decimal
如果您想先验证输入,则应使用decimal total = 0;
...
decimal price = Convert.ToDecimal(priceLabel2.Text);
total += price;
costLabel.Text = total.ToString("c");
:
decimal.TryParse
答案 3 :(得分:0)
costLabel.Text属性类型是一个字符串。
costLabel.Text = priceLabel2.Text;
答案 4 :(得分:0)
costlLabel.Text
是一个字符串,你试着给它一个整数值:
costLabel.Text = Convert.ToInt32(priceLabel2.Text);
改为使用:
costLabel.Text = priceLabel2.Text;