2013-12-04 6 views
1

У меня есть строка "0.30405", и мне нужно преобразовать ее в десятичную. Однако это вызывает ошибку.Как преобразовать строку ("0.25500000") менее 1 в десятичную?

Что такое решения для этого, не разрушив моего голова

Convert.ToDecimal("0.25500000") //throws exception 
+2

это работает для меня, что такое исключение? Я предполагаю, что вы использовали это выражение где-то в своем коде, например, оператор some ... и исключение есть в строке, содержащей 'Convert.ToDecimal', но вы думали, что это вызвано' Convert.ToDecimal'? –

+1

Какова ваша культура, кстати? Я думаю, что он тоже должен работать, но .. –

+0

Я бы рекомендовал использовать функцию Decimal.TryParse (http://msdn.microsoft.com/en-us/library/9zbda557(v=vs.110).aspx). Если это не удастся, он не нарушит приложение, и вы сможете справиться с ним правильно. – Jite

ответ

8

Если эта линия бросает исключение, это, вероятно, потому, что ваши настройки культуры не позволяют запятой в качестве десятичного разделителя.

+0

было бы неплохо, если бы вы добавили решение :) :) –

+0

True! ;-) Я вижу, что другие предоставили решение, используя InvariantCulture. Другим решением может быть изменение десятичного разделителя в строчной кодированной строке. –

+0

да :) другие уже обратились к нему. –

4

Попробуйте

Convert.ToDecimal("0.25500000", CultureInfo.InvariantCulture); 
3

Попробуйте использовать decimal.TryParse() с информацией, указанной культуры.

decimal number; 
decimal.TryParse("0.25500000", NumberStyles.Number, 
        CultureInfo.InvariantCulture, out number); 

Как кто-то указал в комментариях, в коде производства вы, вероятно, хотите, чтобы выяснить, если преобразование является успешным

if(decimal.TryParse(...)) 
{ 
    // success 
} 
+1

@ SonerGönül: но 'номер' можно использовать. –

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