Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
WiDe
10 / 10 / 2
Регистрация: 23.02.2010
Сообщений: 120
1

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

05.03.2014, 14:11. Просмотров 657. Ответов 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
Ответы с готовыми решениями:

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

string в double
Здравствуйте. У меня есть набор переменных стринг следующего формата: &quot;xy:ab&quot;...

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

string to double
string s = &quot;3,14&quot;; double a = Convert.ToDouble(s); double b =...

Double To String
Как преобразовать число из double в string так, что бы в строковом...

5
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
05.03.2014, 14:37 2
WiDe, потому что формат чисел зависит от региональных настроек. Если будете парсить с en-US культурой, получите такой результат, как в книжке, а вот запятую понимать parse разучится.
1
kodv
1419 / 1093 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
05.03.2014, 14:44 3
WiDe, Потому что по стандартам России разделителем целой части от десятичной является запятая, а не точка. Посмотритете еще этот мануал.
1
ICanHelpU
Заблокирован
05.03.2014, 15:03 4
Делайте реплейс по своим стандартам да и все

C#
1
value.replace('.',',');
0
kolorotur
Эксперт .NET
10501 / 8686 / 2162
Регистрация: 17.09.2011
Сообщений: 14,907
Завершенные тесты: 1
05.03.2014, 15:08 5
Цитата Сообщение от ICanHelpU Посмотреть сообщение
Делайте реплейс по своим стандартам да и все
Угу, давайте сделаем:
Берем первое же значение из массива: "-1,035.77219"
Применяем ваш метод, получаем: ""-1,035,77219"
Парсим в число, на выходе получаем -103577219 вместо -1035.77219
0
WiDe
10 / 10 / 2
Регистрация: 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

Ноль в Double и String
Здравствуйте! Написал я какое-то подобие программы, реализующей метод золотого...

Преобразовать String в Double
Добрый день. Подскажите пожалуйста... Я из ком-порта получаю температуру....

String fraction to double
Есть ли быстрый способ привести дробь вида &quot;2/3&quot;, &quot;18/118&quot; и т.д привести к...


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

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

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