我有列表字符串 - " 1,60E + 12" - " 2,60E + 12" - " 3,60E + 12" - " 8,60E + 12" 如何将此字符串转换为int / int64?
答案 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.Parse
和int.Parse
的输出没有区别。从文体上来说,我更喜欢后者。
脚注:只需指定NumberStyles.Float
,即可获得执行完全指数解析所需的所有组合样式。根据{{3}}这种风格......表示
使用AllowLeadingWhite,AllowTrailingWhite,AllowLeadingSign,AllowDecimalPoint和AllowExponent样式。这是一种复合数字样式。