Loading...
Ivan.Nikolov avatar Ivan.Nikolov 8 Точки

[Homework] C# Basics - Primitive Data Types and Variables - Problem {13*} - Comparing Floats

Здравейте колеги, 
имам проблем с кода ми и по-точно работи с цели числа, но в момнта, в който карам десетично и програмката ми се "ЧУПИ"!?!?

Ако може някой дами помогне преди да съм си счупил лаптопа ще съм мумного благодарен :)

А ето и кода ми:

using System;
    class Program
    {
       static void Main()
       {
          Console.WriteLine("Welcome to \" Comparing Floats\" program!");
          Console.Write("Plesae enter a floating point number: ");
          double input1 = double.Parse(Console.ReadLine());

          Console.Write("Plesae enter a second floating point number: ");
          double input2 = double.Parse(Console.ReadLine());

          double eps = 0.000001; // Define the tolerance for variation in their values

          if (Math.Abs(input1 - input2) < eps)
        {
             Console.WriteLine("The 2 floating point numbers {0} and {1}", input1, input2 + " are similar or equal!");
        }
         else if (Math.Abs(input1 - input2) > eps)
        {
             Console.WriteLine("The 2 floating point numbers {0} and {1}", input1, input2 + " are not similar or equal!");
        }
        else
        {
            Console.WriteLine("Invalid Input! Please try again!");
        }
 
    }
}

 

Тагове:
1
Programming Basics 26/09/2014 23:35:02
jabalka:
Темата е дублирана: https://softuni.bg/forum/questions/details/77
Kamigawa avatar Kamigawa 750 Точки
Best Answer

Ако се въведе с точка (8.3) дава ексепшън(формата не е коректен), но ако се въведе със запетая (8,3) го приема ;)

Също при „input1 - input2“ може да ползваш Math.Abs() за да си сигрен, че стойността винаги е положителна, понеже може input2 > input1 (просто идея).

1
26/09/2014 18:36:37
Ivan.Nikolov avatar Ivan.Nikolov 8 Точки

Здравей,

благодаря за бързия отговор. Сетих се затова да пробвам със запетая вместо точка но не остана време и чак сега го пробвах.

Да работи със запетая, но и трябваше да преработя и кода, като добавя и Math.Abc(), защото ми даваше TRUE на всичко :/

Но трябва да има начин да приема числа със "."  и не само със  ",", но как?

Иначе благодаря ти отново :)

0
TKlasnakov avatar TKlasnakov 28 Точки

Не знам защо ти се чупи, но дори и да я подкараш програмата няма да ги ичислява коректно. Това, което ти си направил е от едното да извадиш другото число и ако е <= на епсионата да ти даде, че числата са верни. Уви ... ако сравняваш по този начин и ти трябва да сравниш примерно 6.232722 - 7.232722 ще получиш -1, а това число е по-малко от епсионата.Така получаваш равенство по твоя метод, а те явно не са равни. По принцип си на прав път, но трябва да използваш функцията Math.Abs. Тя би махнала този минус пред отрицателните числа и така сравняването ти би било коректно. Успех

1
26/09/2014 18:36:14
Ivan.Nikolov avatar Ivan.Nikolov 8 Точки

Да, да видях и го оправих, или поне така си мисля :)

Незнам защо обаче не иска да приема числа със ".", а само със "," !?

Благодаря ти за отговора :)

1
Ivan.Nikolov avatar Ivan.Nikolov 8 Точки

Да, да видях и го оправих, или поне така си мисля :)

Незнам защо обаче не иска да приема числа със ".", а само със "," !?

Благодаря ти за отговора :)

1
TKlasnakov avatar TKlasnakov 28 Точки

Разбрах и защо ти се чупи програмата. Защото най-вероятно за инициализирането на дабъла използваш точки, а конзолата приема само със запетайка. След като ги напишеш със запетайка, а не с точка ще ти ги сравни, но ... поправи това, което ти казах, защото всяко отрицателно число ще ти е равно :) Успех 

2
26/09/2014 18:43:07
Ivan.Nikolov avatar Ivan.Nikolov 8 Точки
Е това не го знаех, че конзолата приема десетичните само със запетайки :/ Иначе работи със запетайки, да, но си мислех, че аз бъркам някъде. Благодаря :)
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.