Loading...
rado84 avatar rado84 1 Точки

Мили в километри приема само цели числа

Това е пълният код на програмчето:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace miles_converter
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Type in the speed in miles per hour (numbers only) you would like to convert and press Enter.");
            Console.Write("mph = ");
            var mph = float.Parse(Console.ReadLine());
            var kph = mph * 1.6;
            Console.Write("kph = ");
            Console.WriteLine(kph);
            Console.WriteLine("Closing program in 5 seconds");
            Thread.Sleep(5000);
        }

            private static void Exit()
        {
            throw new NotImplementedException();
        }
    }


}

 

 

 

На този ред:

var mph = float.Parse(Console.ReadLine());

независимо дали му задам float, double или int - приема само цели числа. Ако му въведа 50, проблем няма. Ако обаче въведа 50.4 (mph), програмата крашва и изкарва един куп грешки. Знам, че при милите в час рядко се срещат стойности с десетична точка, но все пак исках да пробвам какво ще стане и не мога да разбера какъв му е проблемът, та не харесва десетичната точка.

0
Programming Basics 15/05/2016 15:08:10
dimitur_botev avatar dimitur_botev 112 Точки
Best Answer

Когато си имате работа с парсване на числа със запетая просто добавете това 


using System.Globalization;

и примерно

float _input = float.Parse(Console.ReadLine(), CultureInfo.InvariantCulture); 

Така сте сигурни,че ще парсва правилно на всяка машина 

 

2
16/05/2016 13:48:48
rado84 avatar rado84 1 Точки

Това ми трябваше! Супер си, мерси! :D

0
ArmenPotourlyan+deleted! avatar ArmenPotourlyan+deleted! 488 Точки

Възможни отговори:

  1. Използвай запетая за десетичен знак.
  2. Смени си регионалните настройки на English-US
  3. Потърси как се използва CultureInfo, за да промениш текущата култура.
1
rado84 avatar rado84 1 Точки

Със запетая (вместо точка) стана, само другите 2 не виждам какво общо имат с проблема. Освен ако не са намек за още една ракета... laugh

0
ArmenPotourlyan+deleted! avatar ArmenPotourlyan+deleted! 488 Точки

Другите две са в случай, че искаш да използваш точката като десетичен разделител.

0
rado84 avatar rado84 1 Точки

Ясно. Аз намерих нещо, което уж трябва да укаже на конзолата да третира точката като десетична запетая:

text = text.Replace('.', ',');

Обаче МСВС подчертава двете думи text като грешни.

0
evgenikolov avatar evgenikolov 304 Точки

Това, което си открил е начин да промениш даден символ с друг на определен string. 

Проблема със запетаята, както спомена колегата по-горе идва от регионалните настройки на машината.

Можеш да промениш това от настройките на Windows ето така: 

Има доста отворени теми на предишни студенти с подобен проблем. Можеш да използваш и тях ако не си успял от тук. :)

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