C# &引用;值的格式不正确";将字符串转换为int32时出错

C# &引用;值的格式不正确";将字符串转换为int32时出错,c#,string,double,int32,C#,String,Double,Int32,这是我的密码 string a="11.4"; int b,c; b=2; c= convert.toint32(a) * b 我得到这个错误 输入字符串的格式不正确 如何转换“a” 嗯a不是一个整数值-您可以使用Convert.ToDouble()来代替。为防止可能出现的解析错误,请改用double.TryParse(): string a = "11.4"; double d; if (double.TryParse(a, out d)) { //d now contain

这是我的密码

string a="11.4";

int b,c;

b=2;

c= convert.toint32(a) * b
我得到这个错误

输入字符串的格式不正确


如何转换“a”

a
不是一个整数值-您可以使用
Convert.ToDouble()
来代替。为防止可能出现的解析错误,请改用
double.TryParse()

string a = "11.4";
double d;

if (double.TryParse(a, out d))
{
    //d now contains the double value
}
编辑:

考虑到注释,当然最好指定区域性设置。下面是一个使用文化无关设置和
double.TryParse()
的示例,其结果是
11.4

if (double.TryParse(a, NumberStyles.Number, CultureInfo.InvariantCulture, out d))
{
    //d now contains the double value
}

嗯,
a
不是一个整数值-您可以使用
Convert.ToDouble()
。为防止可能出现的解析错误,请改用
double.TryParse()

string a = "11.4";
double d;

if (double.TryParse(a, out d))
{
    //d now contains the double value
}
编辑:

考虑到注释,当然最好指定区域性设置。下面是一个使用文化无关设置和
double.TryParse()
的示例,其结果是
11.4

if (double.TryParse(a, NumberStyles.Number, CultureInfo.InvariantCulture, out d))
{
    //d now contains the double value
}

乍一看,数字文字“11.4”不是实际的“int”。尝试其他转换格式,例如ToDouble()

我试过用C#编写以下代码以供参考

        string a = "11.4";
        double num_a = Convert.ToDouble(a);
        int b = 2;
        double ans = num_a * b;

乍一看,数字文字“11.4”不是实际的“int”。尝试其他转换格式,例如ToDouble()

我试过用C#编写以下代码以供参考

        string a = "11.4";
        double num_a = Convert.ToDouble(a);
        int b = 2;
        double ans = num_a * b;

a
是无效的int,它是
double
a
是无效的int,它是
double
。旁注:根据区域性设置,11.4可能会将OK解析为整数(如果“.”是组分隔符);它也可能无法解析为double(如果十进制分隔符为“,”)。解析值时指定区域性是一种很好的做法。@BrokenGlass,您对
d
有什么期望<代码>11.4或
114.0
?根据文化的不同,两者都是正确的。获取异常
输入字符串的格式不正确
比错误的valueSide更安全注意:根据区域性设置,11.4可能实际将OK解析为整数(如果“.”是组分隔符);它也可能无法解析为double(如果十进制分隔符为“,”)。解析值时指定区域性是一种很好的做法。@BrokenGlass,您对
d
有什么期望<代码>11.4或
114.0
?根据文化的不同,两者都是正确的。获取异常
输入字符串的格式不正确
比错误的值更安全,我的VS2010调试器显示
ans=228.0
。读阿列克谢·列文科夫的comment@L.B 228.0? 真奇怪。您是否尝试过分解代码并逐步找出每个变量的确切值?这并不奇怪。只需在代码
Thread.CurrentThread.CurrentCulture=System.Globalization.CultureInfo.GetCultureInfo(“tr-tr”)之前添加这一行即可
Thread.CurrentThread.CurrentCulture=System.Globalization.CultureInfo.GetCultureInfo(“de”)@L.B哦,我看了阿列克谢的评论后才知道。谢谢您的提醒!:)我的VS2010调试器显示
ans=228.0
。读阿列克谢·列文科夫的comment@L.B 228.0? 真奇怪。您是否尝试过分解代码并逐步找出每个变量的确切值?这并不奇怪。只需在代码
Thread.CurrentThread.CurrentCulture=System.Globalization.CultureInfo.GetCultureInfo(“tr-tr”)之前添加这一行即可
Thread.CurrentThread.CurrentCulture=System.Globalization.CultureInfo.GetCultureInfo(“de”)@L.B哦,我看了阿列克谢的评论后才知道。谢谢您的提醒!:)