2014-01-23 2 views
-1

Привет, я не могу найти хороший способ отформатировать эту строку до десятичной.преобразовать строку в десятичную («3942.000000000000»)

3942.000000000000

Любые идеи о нем?

EDIT
Как настоящий вопрос? Некоторые (как я) могут пропустить CultureInfo, который предположительно входит в decimal.Parse, для разных форматов культуры.

Также я не хотел float, поэтому сделать float до decimal является дополнительными шагами. Только мои два цента

+0

ли вы имеете в виду * * парсер? Форматирование преобразует из значения в строку, а не наоборот. Посмотрите на 'decimal.Parse'. –

+2

Как выходной должен отличаться от десятичного преобразования '3942'? Или, как стандартный подход не работает? –

+0

Возможный дубликат строки [Parse string to float number C#] (http://stackoverflow.com/questions/5365566/parse-string-to-float-number-c-sharp) –

ответ

6

Вы пробовали Decimal.Parse с указанием десятичного разделителя?

var yourString = "3942.000000000000"; 
var info = new NumberFormatInfo { NumberDecimalSeparator = "." }; 
var parsed = Decimal.Parse(yourString, info); 

EDIT: , как Джон предложил Вы можете использовать InvariantCulture:

var yourString = "3942.000000000000"; 
var parsed = Decimal.Parse(yourString, CultureInfo.InvariantCulture); 
+1

Было бы чище просто указать инвариантную культуру, ИМО. –

+0

@JonSkeet Как мне это сделать? –

+0

@JonSkeet спасибо за предложение, я поменял свой ответ, чтобы включить, что – wudzik

4

Любая причина, вы не можете использовать

Convert.ToDecimal("3942.000000000000"); 
+0

это порождает ошибку «вход имеет неправильный формат» –

+0

Можете ли вы разместить свой код.Так что будет легко увидеть, что вы делаете неправильно – ElectricRouge

0

Вы можете использовать TryParse на string. Пожалуйста, обратите внимание на номер out.

string yourString = "3942.0000000000" 
decimal yourDecimal; 
decimal.TryParse(yourString, out yourDecimal) 
0

Вы можете использовать TryParse:

string yourString = "3942.0000000000" 

decimal d; 
if (decimal.TryParse(yourString, out d)) 
{ 
    //OK 
} 
else 
{ 
    // Handle failure 
} 
+0

Было ли отсутствие закрывающейся скобки преднамеренной или случайной? :) –

+0

@ MichaelKjörling thx для компиляции кода, случайный. – Peter

+0

Я только делал это в своей голове. Не хотел входить и редактировать ваш ответ, если на самом деле это было намеренно. –

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