asp.net十进制乘法

时间:2014-02-18 16:06:04

标签: c# asp.net .net visual-studio-2013

所以我有一个问题,我的乘法将与完整数字完美配合,但是当我尝试使用十进制数字时,它会发出错误并发出错误日志:

输入字符串的格式不正确。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.FormatException:输入字符串的格式不正确。

来源错误:

Line 15:     protected void Button1_Click(object sender, EventArgs e)
Line 16:     { 
Line 17:         int p = Convert.ToInt32(HourlyWage.Text); 
Line 18:         int q = Convert.ToInt32(HoursPerWeek.Text); 
Line 19:         int t = p * q;

这也是我乘以数据的实际方法,任何帮助都将受到赞赏

4 个答案:

答案 0 :(得分:4)

如果您输入decimal号码,则应使用该类型而不是int。使用Convert.ToDecimaldecimal.Parse或更安全的选项decimal.TryParse获取如下数字:

decimal hourlyWage;

if(decimal.TryParse(HourlyWage.Text, out hourlyWage))
{
 //valid decimal number
}
else
{
 //invalid input
}

HoursPerWeek执行相同操作,然后将乘法结果存储在decimal类型变量中。

答案 1 :(得分:2)

您无法将带小数的数字解析为int。请尝试使用decimal

protected void Button1_Click(object sender, EventArgs e)
{ 
    decimal p = Convert.ToDecimal(HourlyWage.Text); 
    decimal q = Convert.ToDecimal(HoursPerWeek.Text); 
    decimal t = p * q;

答案 2 :(得分:1)

您不能将十进制字符串转换为整数。

int更改为doubledecimal s

Line 15:     protected void Button1_Click(object sender, EventArgs e)
Line 16:     { 
Line 17:         decimal p = Convert.ToDecimal(HourlyWage.Text); 
Line 18:         decimal q = Convert.ToDecimal(HoursPerWeek.Text); 
Line 19:         decimal t = p * q;

答案 3 :(得分:1)

问题:您正在将小数值解析为Integer

解决方案:您需要使用以下任一方法正确地传递decimal值。

decimal.Parse()  
decimal.TryParse()   
Convert.ToDecimal()  

试试这个:decimal.Parse()

decimal p = decimal.Parse(HourlyWage.Text, CultureInfo.InvariantCulture);
decimal q = decimal.Parse(HoursPerWeek.Text, CultureInfo.InvariantCulture);