Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中将字符串转换为int#_C# - Fatal编程技术网

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

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”错误。是否有更好的方法来执行

对不起,我是新来的。我正在从sqlserver获取数量值。通常,它是一个十进制字符串。例如“6.00”。我必须将它作为int存储在C#变量中。我正在做以下几行我测试过的数据:

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来获得更高的精度。这里有一些关于差异的更多信息。