2013-10-04 6 views
1

Я конвертирую string в Float/Decimal в monotouch, но это дает исключение для формата. Я использую Decimal.Parse(), Convert.ToDecimal(). Пожалуйста, дайте любое решение для этого преобразования.В monotouch как преобразовать строку в десятичную/поплавковую?

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

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

Введите код –

+0

Что возвращает SystemVersion? Если он возвращает что-то вроде «7.0.2», его нельзя преобразовать в число. –

+0

Да, он возвращает «7.0.2». Итак, какое решение для преобразования в десятичное? –

ответ

2

SystemVersion является строка с несколькими точками . символов. Это не будет правильно разобрать как есть в поплавок или десятичный знак.

В зависимости от того, что вы хотите, вы можете изменить строку перед разбором. Например. если вы хотите 7.0 из строки 7.0.2, то вы можете так подстроить (до 2-го символа .).

OTOH если то, что вам нужно сделать, это проверка версии (наиболее распространенная операция), то вам нужно только сделать это:

if (UIDevice.CurrentDevice.CheckSystemVersion (7,0)) { 
    // do this in iOS7+ 
} else { 
    // do this before iOS7 
} 
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.

Смежные вопросы