将字符串从数据库转换为双精度

时间:2018-07-13 04:11:55

标签: c# timespan

在我的程序中,我正在使用一个包含时间(字符串previousTimeVASN)的数据库。 我有一个计时器可以计时总秒数。我想显示previousTimeVASN的总和+总秒数。

我显示以下错误:

  

“ System.FormatException:'输入字符串的格式不正确。'”在线:double test1 = Convert.ToDouble(previousTimeVASN);

任何建议都令人赞赏。

private void sNbtn_Click(object sender, RoutedEventArgs e)
{
     TabControl.SelectedIndex = 1;
     dtVASN.Tick += new EventHandler(dtVASN_Tick);
     dtVASN.Interval = new TimeSpan(0, 0, 0, 0, 1);
}

void dtVASN_Tick(object sender, EventArgs e)
{
     if (swVASN.IsRunning)
     {
         TimeSpan tsVASN = swVASN.Elapsed;
         double test = tsVASN.TotalSeconds;
         double test1 = Convert.ToDouble(previousTimeVASN);
         txtVASN.Text = (test + test1).ToString(); 
     }
}

1 个答案:

答案 0 :(得分:1)

如果value不是有效格式的数字,则方法Convert.ToDouble将抛出FormatException。您在此处得到相同的意思是previousTimeVASN中的值不是数字或不是预期的格式。这是您检查转换是否可行的另一种选择,即Double.TryParse Method

  

以指定的样式转换数字的字符串表示形式   和特定于文化的格式为其双精度浮点数   等价的数字。返回值指示是否转换   成功或失败。

因此,可以对代码进行如下修改:

if (swVASN.IsRunning)
{
     TimeSpan tsVASN = swVASN.Elapsed;
     double test = tsVASN.TotalSeconds;
     double test1;
     Double.TryParse(previousTimeVASN, out test1);
     txtVASN.Text = (test + test1).ToString(); 
}

如果要警告用户第二个数字无效,则可以使用如下的parse返回值:

if(Double.TryParse(previousTimeVASN, out test1))
   txtVASN.Text = (test + test1).ToString(); 
else
   txtVASN.Text = "previous Time VASN is not valid:'