在monotouch中如何将字符串转换为十进制/浮点数?

时间:2013-10-04 10:39:19

标签: ios xamarin.ios

我正在string中将Float转换为Decimal / monotouch,但它正在提供格式例外。我使用的是Decimal.Parse()Convert.ToDecimal()。请为此转换提供任何解决方案。

decimal d = Convert.ToDecimal(UIDevice.CurrentDevice.SystemVersion, CultureInfo.InvariantCulture); 

decimal d = Decimal.Parse(UIDevice.CurrentDevice.SystemVersion, CultureInfo.InvariantCulture);

2 个答案:

答案 0 :(得分:2)

SystemVersion是一个包含多个点.个字符的字符串。这不能正确地将解析为到浮点数或小数。

根据您的需要,您可以在解析之前修改字符串。例如。如果您希望7.0不在字符串7.0.2之外,那么您可以使用子字符串(最多为第二个.字符)。

OTOH如果您需要做的是版本检查(最常见的操作),那么您只需要这样做:

if (UIDevice.CurrentDevice.CheckSystemVersion (7,0)) {
   // do this in iOS7+
} else {
   // do this before iOS7
}

答案 1 :(得分:0)

System.Version有一个constructor,可以解析那种string,从2到4个组件,形式为:

major.minor[.build[.revision]]

因此,要解析UIDevice.CurrentDevice.SystemVersion,您可以这样做:

var version = new Version (UIDevice.CurrentDevice.SystemVersion);

if (version.Major >= 7) {
    //iOS7+
} else {
    // anything else
}

如果您正在尝试找出特定版本,请使用此功能。否则,@ poupou的解决方案很棒,而且更具iOS风格。