2013-10-03 1 views
0

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

string x = "7,50"; 
string y = "5"; 
double a = double.Parse(x); 
double b = double.Parse(y); 
double c = a - b; 

, то результат должен быть 2,50.

, но я получил 70. из десятичной точки х рассматривается как 75.

+1

, что текущая культура установлен? –

+0

Я использую tr-TR. Я также добавляю double a = double.Parse (x, new CultureInfo ("tr-TR")); double a = double.Parse (x, CultureInfo.InvariantCulture); но это не сработало – ypbr

+0

@ypbr: «Это не сработало» недостаточно информации. Пожалуйста, отредактируйте короткую, но полную программу в вопросе и включите вывод. –

ответ

2

Просто укажите соответствующую культуру double.Parse. Например:

CultureInfo french = new CultureInfo("fr-FR"); 
double x = double.Parse("7,50", french); 

Я подозреваю, что ты на самом деле был «7,5» в качестве значения, однако - как «7,50» будет разобрано как «750», если вы использовали культуру, Ждут» t используйте запятую в качестве разделителя.

Конечно, если эти валютные ценности, вы должны рассмотреть возможность использования decimal вместо double, чтобы начать с ...

+0

Это был мастерский удар! +1 –

+0

У меня было 7.5 в качестве значения pardes. до разбора 7,50 после разбора это становится 7.5 – ypbr

+0

@ypbr: Это не * вообще * ясно, что вы имеете в виду, но вам нужно понять, что само значение (как 'double') не имеет запятой или точка - это всего лишь число. Формат становится актуальным только при преобразовании его в строку или из нее. Вы не дали нам достаточной информации о том, откуда поступают данные, как вы проверяете значения и т. Д. –

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