Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
9 / 9 / 3
Регистрация: 22.01.2010
Сообщений: 141
.NET 4.x

Конвертация XmlNode.InnerText в Double

09.01.2015, 22:08. Показов 1531. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Пишу библиотеку для конвертации валют, столкнулся с не выполнением условия тут:

C#
1
if (Double.TryParse(node.ChildNodes[4].InnerText, out course) ;
хотя числовое значение в node.ChildNodes[4].InnerText присутствует.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
 
 
namespace ConverterLibrary
{
    public class CurrencyConverter
    {
        /// <summary>
        /// Gets courses in XML for all currency
        /// </summary>
        private static XmlDocument GetAllCourses()
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load("http://pfsoft.com.ua/service/currency/");
                return doc;
            }
            catch (Exception e)
            {
               throw new Exception(e.Message); 
            }
        }
 
        private static double GetCourse(string curr_name)
        {
            double course = 0;     
            XmlDocument XmlDoc = GetAllCourses();
 
            foreach (XmlNode node in XmlDoc.SelectNodes("/ValCurs/Valute"))  
            {
                if (node.ChildNodes[1].InnerText == curr_name) // get CharCode
                {
                    throw new Exception(node.ChildNodes[4].InnerText);  // = 2.8005 но условие не выполняется все равно
                    if (Double.TryParse(node.ChildNodes[4].InnerText, out course)) // get the course value, nominal = 100
                    {     
                        if (Int32.Parse(node.ChildNodes[2].InnerText) == 10) course *= 10;   //for RUB, BYR nominal = 10
                        if (Int32.Parse(node.ChildNodes[2].InnerText) == 1000) course /= 10; //for JPY, HUF nominal = 1000
                        return course;
                    }
                }  
            }
            return course;  // 0;
        }
        public static double Convert(double val, string curr_name1, string curr_name2 = "")
        {
            double course, result;
 
            if (val < 1) 
                throw new Exception("Error! Сurrency value < 1!");
 
            if (curr_name1 == "UAH")
                course = GetCourse(curr_name2);
            else 
                if (curr_name2 == "UAH" || curr_name2 == "")
                    course = GetCourse(curr_name1);
                else throw new Exception("Error! One of the parameters must be UAH.");
 
            result = (val * course) / 100;
            if (result == 0)
                throw new Exception("Error! Unknown currency CharCode.");
 
            return result;
        }
        
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2015, 22:08
Ответы с готовыми решениями:

Конвертация match.Value в double
Программа отказывается работать с дробными числами, ругается на строчку с конвертацией match.Value в double. using System; using...

Конвертация double с отрицательным знаком в string
Каким образом слить массив double numbers = new double {0, -1, 2, -3.5, 4}; В одну строку с разделителем &quot;;&quot; Чтобы...

Конвертация из устаревшего типа Real48 в Double и обратно
Имеется массив байт byte arrayOfBytes = new byte { 139,195,245,40,204,77 }; В этом массиве хранится число 1646.38 типа Real...

4
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
09.01.2015, 22:34
C#
1
  throw new Exception(node.ChildNodes[4].InnerText);  // = 2.8005 но условие не выполняется все равно
Почему после этой строчки еще какие то условия стоят?
0
9 / 9 / 3
Регистрация: 22.01.2010
Сообщений: 141
09.01.2015, 22:39  [ТС]
Это я передавал значение node.ChildNodes[4].InnerText в основную программу для проверки
0
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
09.01.2015, 22:55
чет вообще не смог разобраться в вашей программе вот пример выводит на экран вам же Value вроде нужен

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Linq;
using System.Xml.Linq;
 
 
    class Program
    {
 
        public static void Main()
        {
            var xdoc = XDocument.Load("http://pfsoft.com.ua/service/currency/");
 
            foreach (var VARIABLE in xdoc.Elements("ValCurs").Elements("Valute").Select(n =>new{ Val = n.Element("Value").Value}))
            {
                Console.WriteLine(VARIABLE.Val);
            }
        }
    }
Добавлено через 6 минут
или еще есть поля с этой xml которые вас интересуют?
0
9 / 9 / 3
Регистрация: 22.01.2010
Сообщений: 141
09.01.2015, 23:06  [ТС]
Спасибо, мне уже помогли.
TryParse method uses the current culture thus the number formats might differ depending on you system.

You can use the override version of TryParse where you pass IFormatProvider as a parameter. CultureInfo.InvariantCulture uses . as a decimal separator:


C#
1
 if (Double.TryParse(node.ChildNodes[4].InnerText, NumberStyles.Any, CultureInfo.InvariantCulture, out course))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2015, 23:06
Помогаю со студенческими работами здесь

Конвертация строки в double
Добрый день! При конвертации строки в double, что бы потом получившееся число прибавить к дате сообщается: &quot;при преобразовании...

Конвертация double в std::string
надо сконвертить doble в std::string, нашел вот такой способ, сделал все также: std::string dtoa(double value, size_t precision = 10) ...

QString в Double не точная конвертация
Такой вопрос, делаю калькулятор. Введенное строка преобразуется в число формата double, но если оно не целое то он его не точно передает....

Неверная конвертация double в string
Всем доброго времени суток, столкнулся с такой проблемой: в программе необходимо принять число и 2 строки и слепить их в одну но разделив...

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double
Думаю из-за polp #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;cstdlib&gt; using namespace std; double polp(double af,double...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru