Loading...
Dimitroff avatar Dimitroff 3 Точки

Primitive Data Types 13 - Comparing Doubles проблем с четене от конзолата.

Като цяло скалъпих програмата да работи - въвеждаш едно число, после друго, сравнява ги и ти казва дали са равни. Само че има един проблем - единственият формат в който приема числата е ако са със запетайка. Пример : 2,6 става; 2.6 не става, дава грешка. Почти съм сигурен, че това зависи само от локалните настройки на компютъра. НО все пак не бих отказал помощ - как да стане номера с форматите, така че да не дава грешки?

Начина. по който съм направил четенето от конзолата е следния:

Console.WriteLine("Write a number");
string aText = Console.ReadLine();
double a = double.Parse(aText);

Тагове:
2
Programming Basics 06/04/2015 16:47:54
Anonymous:
Многократно дублирана тема: https://softuni.bg/Forum/77/Homework-CSharp-Basics-Primitive-Data-Types-and-Variables-Comparing-Floats
nakov avatar nakov SoftUni Team Trainer 5295 Точки
Best Answer

Трябва да сложиш локализация в началото на програмата, за да не зависи от настройките на твоя комп:

System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

С това винаги ще се използва точка "." за разделител между цялата и дробната част. Запетаята за дробна част я забрави. Ползва се само в България и то само в училище. Компютърджиите ползват точка.

7
08/04/2015 00:54:41
Inspix avatar Inspix 51 Точки

Аз лично не знаех за тази локализация и позлвах:

  • double x = double.Parse(Console.ReadLine().Replace('.', ','));

След като прочетох вашия коментар, веднага реших да променя задачите, които използваха double.Parse... 

Проблема с грешките изчезна, независимо дали използваме запетая или точка при въвеждането, но забелязах, че ако въведа числото с запетая, при парсване числото губи дробната си част. Например 3,5 го парсва като 35.

 

Има ли някой друг workaround, като сметнем, че не винаги може да разчитаме на user-а да използва само точка?

1
08/04/2015 15:22:37
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.