如何在C#中将字符串转换为int

时间:2019-03-13 18:33:34

标签: c#

对不起,我是C#的新手。我从sqlserver获取数量值。通常,它以十进制字符串形式出现。例如“ 6.00”。我必须将其作为int存储在C#变量中。我正在执行以下工作,这些工作已处理了我测试过的几行数据:

int newVal = 
    Convert.ToInt32(Convert.ToDecimal(drUsers["quantity"].ToString()));

如果我直接转换为int而不先将其转换为十进制,则抛出“输入格式不正确”错误。有没有更好的方法,尤其是处理数据错误,例如来自数据库的空值。

谢谢

2 个答案:

答案 0 :(得分:1)

我会避免使用ToSring()。您可以使用Field methodquantity用作小数。

Convert.ToInt32(drUsers.Field<decimal>("quantity"));

答案 1 :(得分:1)

如果您确定要获取的值将是小数,则可以使用

int newVal = (int)Decimal.Parse(drUsers["quantity"]);

如果您希望安全并且可以进行防御性编程,建议您使用Decimal.TryParse()类似于以下内容:

decimal foo = 0;
int newVal = 0;

if(Decimal.TryParse(drUsers["quantity"], out foo) {
    newVal = (int)foo;
} else {
    //handle error
}

编辑:将双精度转换为十进制,但是我认为选择取决于您需要十进制的精度。数据库类型并不总是与C#中的类型1:1匹配,因此两者都可以。