C# 如何在C中将字符串转换为int#
对不起,我是新来的。我正在从sqlserver获取数量值。通常,它是一个十进制字符串。例如“6.00”。我必须将它作为int存储在C#变量中。我正在做以下几行我测试过的数据:C# 如何在C中将字符串转换为int#,c#,C#,对不起,我是新来的。我正在从sqlserver获取数量值。通常,它是一个十进制字符串。例如“6.00”。我必须将它作为int存储在C#变量中。我正在做以下几行我测试过的数据: int newVal = Convert.ToInt32(Convert.ToDecimal(drUsers["quantity"].ToString())); 如果我直接转换为int而没有先转换为decimal,那么它会抛出“Input not in correct format”错误。是否有更好的方法来执行
int newVal =
Convert.ToInt32(Convert.ToDecimal(drUsers["quantity"].ToString()));
如果我直接转换为int而没有先转换为decimal,那么它会抛出“Input not in correct format”错误。是否有更好的方法来执行此操作,尤其是处理来自数据库的数据错误(如null)
谢谢我会避免使用
tostring()
。您可以使用将数量
作为小数点获取
Convert.ToInt32(druser.Field(“数量”);
我会避免tostring()
。您可以使用将数量
作为小数点获取
Convert.ToInt32(druser.Field(“数量”);
如果您确定得到的值将是一个小数,您可以使用
intnewval=(int)Decimal.Parse(druser[“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匹配,因此这两种类型都可以。如果您确定得到的值将是十进制,则可以使用
intnewval=(int)Decimal.Parse(druser[“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匹配,因此这两种类型都可以。如果数据库中已经有一个数字,您可以强制转换它。您试过了吗?TryParse
如果转换失败,将返回false
,这将允许您处理无效数据而不引发异常。如果数据库中已经有一个数字,您可以强制转换它。您尝试过吗?TryParse
如果转换失败,将返回false
,这将允许您处理无效数据而不引发异常。如果它已经是十进制,使用Decimal.Parse不是更安全吗?这取决于数据库中的数据外观。如果它是一个像“4.243”这样的短小数,那么Double就足够了,但是如果它是像“4.2342355325223424243434343434343434234”这样的“极端”的话,你可能需要使用decimal.Parse来获得更高的精度。这里有一些关于差异的更多信息。如果它已经是十进制的,那么使用Decimal.Parse不是更安全吗?这取决于数据库中的数据是什么样的。如果它是一个像“4.243”这样的短小数,那么Double就足够了,但是如果它是像“4.2342355325223424243434343434343434234”这样的“极端”的话,你可能需要使用decimal.Parse来获得更高的精度。这里有一些关于差异的更多信息。