我正在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);
答案 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风格。