Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Sir1us
20 / 20 / 1
Регистрация: 30.01.2013
Сообщений: 99

Сложение чисел с типом Double

03.08.2022, 16:37. Показов 1279. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, задачка смешная но все же.
Вот в некотором уроке, рассказывают как заставить считывать вместо числа с "," число с "."

К примеру ввод в консоль чисел 2,5 + 2,5 = 5. Здесь все понятно
ввод чисел 2.5 + 2.5 = ( не обработанные данные)
подключаем using System.Globalization;

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;
using System.Globalization;
 
namespace Урок
{
    class Program
    {
        static void Main(string[] args)
        {
 
            string entertext;
            double a, b;
            NumberFormatInfo numberFormatInfo = new NumberFormatInfo()
            {
                NumberDecimalSeparator = "."
            };
 
 
            Console.WriteLine("Введите число");
            entertext = Console.ReadLine();
            a = Convert.ToDouble(entertext, numberFormatInfo);
 
            Console.WriteLine("Введите число");
            entertext = Console.ReadLine();
            b = Convert.ToDouble(entertext, numberFormatInfo);
 
            double resul = a + b;
            Console.WriteLine("Результат " + resul);
 
            
 
        }
    }
}
Вроде начинает работать
2.5 + 2.5 = 5!
Но при сложении 2,5 + 2,5 = 50.

Не пойму почему так выходит.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.08.2022, 16:37
Ответы с готовыми решениями:

Сложение большого количества чисел (double)
В листе хранится около 16250 значений (колонка №2) в текстовом файле. Когда я вывожу их Сумму, то получается результат 202 275 456 665...

Операции с типом double
double h=0.005; double T=0.2; double tN=0.3; int Nt=(tN-T)/h; cout<<"Nt "<<Nt<<endl; На экран выводится 19, при h=0.0005...

Проблема с типом данных double
Нужна программа, которая считывает и выводит число. Вроде просто, но когда ввожу 0.493150590279e238, то выводится какая-то муть. Да и...

7
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.08.2022, 16:44
Цитата Сообщение от Sir1us Посмотреть сообщение
Не пойму почему так выходит
По умолчанию запятая используется для группировки разрядов целой части: например, тысяча двести пятьдесят можно записать как 1,250.0
Парсер вашу запятую расценивает как разделитель групп десятков и единиц и парсит 2,5 как 25.
2
 Аватар для Sir1us
20 / 20 / 1
Регистрация: 30.01.2013
Сообщений: 99
03.08.2022, 17:09  [ТС]
Я понял, это получается после подключение
using System.Globalization;
Запятая начала разделять сотни десятки и единицы, а что нужно что бы оно считывало и точку и запятую, что бы число не разделяло по группам?
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
03.08.2022, 17:53
Sir1us,
C#
1
2
3
4
5
6
7
8
9
10
11
12
            NumberFormatInfo numberFormatInfo = new NumberFormatInfo()
            {
                NumberDecimalSeparator = "."
            };
            Console.WriteLine("Введите число");
            double a = Convert.ToDouble(Console.ReadLine().Replace(',', '.'), numberFormatInfo);
 
            Console.WriteLine("Введите число");
            double b = Convert.ToDouble(Console.ReadLine().Replace(',', '.'), numberFormatInfo);
 
            double resul = a + b;
            Console.WriteLine("Результат " + resul);
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.08.2022, 19:06
Цитата Сообщение от Sir1us Посмотреть сообщение
а что нужно что бы оно считывало и точку и запятую, что бы число не разделяло по группам?
Ничего не нужно — выберите один формат и придерживайтесь ему. Если пользователь ввел что-то не то — укажите на это и попросите ввести заново.
Додумывать за пользователя что он там хотел ввести — плохая идея, разные люди из разных профессий и культур пишут числа по-разному, так что лучше не гадать.
Как вариант — не указывайте никакой формат, тогда парсер будет считывать в соответствии с региональными настройками системы, т.е. так, как пользователь привык видеть и писать числа на этом компе.

Цитата Сообщение от AndreyVorobey Посмотреть сообщение
Console.ReadLine().Replace(',', '.')
Не надо так делать.
3
 Аватар для Sir1us
20 / 20 / 1
Регистрация: 30.01.2013
Сообщений: 99
03.08.2022, 19:10  [ТС]
Почти то что нужно, но хотелось бы на моем коде понять как это сделать
Спасибо за ответы.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
03.08.2022, 19:13
Sir1us, убирает NumberFormatInfo, и читаете про double.TryParse()
1
 Аватар для Sir1us
20 / 20 / 1
Регистрация: 30.01.2013
Сообщений: 99
03.08.2022, 19:14  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Ничего не нужно — выберите один формат и придерживайтесь ему. Если пользователь ввел что-то не то — укажите на это и попросите ввести заново.
Додумывать за пользователя что он там хотел ввести — плохая идея, разные люди из разных профессий и культур пишут числа по-разному, так что лучше не гадать.
Да именно это я и обдумывал, что многие могут использовать разделитель чисел как и ", так и ." по этому я и задал вопрос такой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.08.2022, 19:14
Помогаю со студенческими работами здесь

Сравнение двух переменных с типом double
Здравствуйте, у меня была проблема с тем, что QVector полностью не заполнялся, в результате чего, на графике появлялась лишняя точка (0;0)....

Построить классовую обертку над типом double
РЕБЯТА ПОМОГИТЕ ПОЖАЛУЙСТА!!! программирование один семестр (( Построить классовую обертку над типом double. Предотвратить...

Арифметические операции с типом double и непонятная погрешность
Столкнулся с такой проблемой: у меня идет цикл с переменной типа double for (double j = bottom; j < top; j += step) { ...

Может ли переменная-счетчик быть типом Double
Может ли быть счетчик оператора for, while и т. д. ( у меня это FR1 и массив MFR) задан типом данных double ? У меня ругается и только int...

Как корректно работать с типом long double в visual c++ 6.0
под Visual C++ 6 standart edition столкнулся со следующей проблемой компилятор переводит все long double в double таким образом...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru