C#Amateur here;
我正在创建一个基本的'引用计算器',ItemQuantity * ItemCost。 我希望数量是整数(1,2,3,4,5等),成本可以是整数或有小数位(1,2,3.45,6.2)。
我的WPF应用程序中的一切正常,但是,我用来输出itemQuantity * itemCost
之和的TextBlock显示一个舍入的整数。
显然,我希望它精确到两位小数,但目前它将数字四舍五入。我做错了什么?
List<Items> quoteList = new List<Items>();
public void button_itemadd_Click(object sender, RoutedEventArgs e)
{
quoteList.Add(new Items()
{
itemName = input_itemdesc.Text,
itemQuantity = Convert.ToInt32(input_itemquantity.Text),
itemCost = Convert.ToDecimal(input_itemcost.Text)
});
dataGridView1.ItemsSource = "";
dataGridView1.ItemsSource = quoteList;
updateQuote();
}
public void updateQuote()
{
decimal costTotal = 0;
for (int i = 0; i < quoteList.Count; i++)
{
costTotal += (Convert.ToInt32(quoteList[i].itemCost) * Convert.ToDecimal(quoteList[i].itemQuantity));
}
// output_quotecost is the TextBlock
output_quotecost.Text = costTotal.ToString();
}
}
class Items
{
public string itemName { get; set; }
public int itemQuantity { get; set; }
public decimal itemCost { get; set; }
}
答案 0 :(得分:2)
看起来你混淆了Convert方法:
costTotal += (Convert.ToInt32(quoteList[i].itemCost) *
Convert.ToDecimal(quoteList[i].itemQuantity));
相反,它应该是:
costTotal += (Convert.ToDecimal(quoteList[i].itemCost) *
Convert.ToInt32(quoteList[i].itemQuantity));
您必须将.ToInt32
替换为.ToDeciaml
才能获得正确的输出。