Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
#1

Парсинг double из string. Не принимает точку - C#

05.03.2014, 14:11. Просмотров 486. Ответов 5
Метки нет (Все метки)

Помогите пожалуйста разобраться. Почему
C#
1
double tmp = Double.Parse("11,11");
нормально парсится, а
C#
1
double tmp = Double.Parse("11.11");
вызывает исключение FormatException. В мануале есть пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
 
public class Example
{
   public static void Main()
   {
      string[] values= { "-1,035.77219", "1AFF", "1e-35", 
                         "1,635,592,999,999,999,999,999,999", "-17.455", 
                         "190.34001", "1.29e325"};
      double result;
 
      foreach (string value in values)
      {
         try {
            result = Convert.ToDouble(value);
            Console.WriteLine("Converted '{0}' to {1}.", value, result);
         }   
         catch (FormatException) {
            Console.WriteLine("Unable to convert '{0}' to a Double.", value);
         }               
         catch (OverflowException) {
            Console.WriteLine("'{0}' is outside the range of a Double.", value);
         }
      }       
   }   
}
// The example displays the following output:
//       Converted '-1,035.77219' to -1035.77219.
//       Unable to convert '1AFF' to a Double.
//       Converted '1e-35' to 1E-35.
//       Converted '1,635,592,999,999,999,999,999,999' to 1.635593E+24.
//       Converted '-17.455' to -17.455.
//       Converted '190.34001' to 190.34001.
//       '1.29e325' is outside the range of a Double.
Там у них всё отлично как с запятой, так и с точкой...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2014, 14:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсинг double из string. Не принимает точку (C#):

Кортежи: Не удается неявно преобразовать тип "System.Tuple<double, double>" в "string" - C#
Помогите.Как устранить ошибку? Ошибка CS0029 Не удается неявно преобразовать тип &quot;System.Tuple&lt;double, double&gt;&quot; в &quot;string&quot;. using System;...

string to double - C#
string s = &quot;3,14&quot;; double a = Convert.ToDouble(s); double b = double.Parse(s); Скажите, пожалуйста, как из строки перевести в число,...

Double To String - C#
Как преобразовать число из double в string так, что бы в строковом представлении числа была не запятая (как это получается по умолачанию...

string в double - C#
допустим, считываем строку: &quot;32,21&quot; как эту строку разделить на два числа, по запятой, и поместить их в double

string в double - C#
Здравствуйте. У меня есть набор переменных стринг следующего формата: &quot;xy:ab&quot; где x,y,a,b - целые числа. Мне нужно получить переменный...

Массив String в Double - C#
Здраствуйте, выскакивает Formatexception. Не могу преобразовать массив string в double StreamReader f = new...

5
Psilon
Master of Orion
Эксперт .NET
5909 / 4806 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
05.03.2014, 14:37 #2
WiDe, потому что формат чисел зависит от региональных настроек. Если будете парсить с en-US культурой, получите такой результат, как в книжке, а вот запятую понимать parse разучится.
1
kodv
1402 / 1076 / 235
Регистрация: 11.04.2011
Сообщений: 2,589
Завершенные тесты: 1
05.03.2014, 14:44 #3
WiDe, Потому что по стандартам России разделителем целой части от десятичной является запятая, а не точка. Посмотритете еще этот мануал.
1
ICanHelpU
Заблокирован
05.03.2014, 15:03 #4
Делайте реплейс по своим стандартам да и все

C#
1
value.replace('.',',');
0
kolorotur
Эксперт .NET
9109 / 7615 / 1210
Регистрация: 17.09.2011
Сообщений: 13,150
05.03.2014, 15:08 #5
Цитата Сообщение от ICanHelpU Посмотреть сообщение
Делайте реплейс по своим стандартам да и все
Угу, давайте сделаем:
Берем первое же значение из массива: "-1,035.77219"
Применяем ваш метод, получаем: ""-1,035,77219"
Парсим в число, на выходе получаем -103577219 вместо -1035.77219
0
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
05.03.2014, 15:48  [ТС] #6
Ах вон оно что... Спасибо, я просто исправил запятую на точку в настройках Windows.
0
05.03.2014, 15:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2014, 15:48
Привет! Вот еще темы с ответами:

string c . вместо , to double - C#
Здравствуйте Подскажите, как мне записать в бинарный файл число как double, если у него разделитель вместо , будет . (например не...

Ноль в Double и String - C#
Здравствуйте! Написал я какое-то подобие программы, реализующей метод золотого сечения (для функции определяемой пользователем). Проблема...

Заменить double на string - C#
Есть числовой массив типа double, можно ли как-то заменить конкретный элемент массива на символьную строку (&quot;АБВ&quot; например) ?

TextBox. Из Double в string - C#
Есть форма, на ней TextBox, который привязан к переменной типа double, т.е. можно вводить только числа. Так вот. Как string...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru