c#将字符串4,60E + 12转换为int / int64

时间:2014-10-26 12:00:00

标签: c# string int

我有列表字符串   - " 1,60E + 12"   - " 2,60E + 12"   - " 3,60E + 12"   - " 8,60E + 12" 如何将此字符串转换为int / int64?

1 个答案:

答案 0 :(得分:3)

很简单,你只需要使用<type>.Parse重载specifies the number styles来允许指数:

int number = Int32.Parse(value, NumberStyles.AllowExponent);

以及字符串列表:

var numbers = values.Select(x => int.Parse(x, NumberStyles.AllowExponent)).ToList();

如果您的数字有小数点(也会看到较短风格的脚注),您需要:

Int32.Parse(value, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint);

并且,由于您的数字似乎使用特定于文化的格式(使用,表示小数点),您可能还需要指定格式提供程序,如下所示:

Int32.Parse(value, 
    NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint, 
    CultureInfo.GetCultureInfo("de-DE").NumberFormat);

如果您的数字太大,那么您需要使用long而不是int,否则您将获得OverflowException

Int32.Parseint.Parse的输出没有区别。从文体上来说,我更喜欢后者。


脚注:只需指定NumberStyles.Float,即可获得执行完全指数解析所需的所有组合样式。根据{{​​3}}这种风格......表示

  

使用AllowLeadingWhite,AllowTrailingWhite,AllowLeadingSign,AllowDecimalPoint和AllowExponent样式。这是一种复合数字样式。