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



在我的程序中,我使用一个包含时间(字符串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(); 
}
}
如果值不是有效格式的数字,方法Convert.ToDouble将抛出FormatException。这里得到的相同值意味着previousTimeVASN中的值不是数字,或者不是预期的格式。这里有一个替代选项供您检查转换是否可能,即Double.TryParse方法

以指定样式转换数字的字符串表示形式及其双精度浮点的区域性特定格式数量相等。返回值指示转换是否成功或失败。

因此代码可以修改如下:

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:'

最新更新