С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 0
Регистрация: 26.07.2015
Сообщений: 46

Почему не срабатывает условие?

14.10.2019, 19:21. Показов 2034. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые специалисты, подскажите пожалуйста, почему игнорируется оператор условного перехода в 25 строке и как это исправить) (Заранее благодарен)
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace calculating_of_numb_1
{
    class cofn
    {
        public float q,e;
        public float w;
        public float W(float q)
        {
            w = q + 0.1F;
            return w;
        }
        
        class Program
        {
            static void Main(string[] args)
            {
                cofn a = new cofn(); a.e = 1.0F;
                for (a.q = 0.0F; a.q < 6.0F; a.q=a.q+.1F)
                {
                    if (a.q == a.e) { Console.ReadKey(); }
                    else
                    {
                        Console.Write(a.W(a.q)+"  ");
                    }
                }
                Console.ReadKey();
            }
 
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.10.2019, 19:21
Ответы с готовыми решениями:

Double.NAN - почему условие не срабатывает?
Не пойму, почему условие не срабатывает. Значения переменных в отладчике Double.NaN. Скрин прилагаю.

Не срабатывает условие
Здравствуйте, подскажите пожалуйста почему может не срабатывать такое условие ?? foundation_id = fnd.Element(aw +...

Не срабатывает условие
Здравствуйте! У меня в коде раз через раз условие не срабатывает. Переменная Health уходит в минус, когда я ей сказал, чтобы при Health = 0...

5
291 / 193 / 104
Регистрация: 14.11.2017
Сообщений: 489
14.10.2019, 19:31
Лучший ответ Сообщение было отмечено Элд Хасп как решение

Решение

serg_78, поэтому
Миниатюры
Почему не срабатывает условие?  
2
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16119 / 11244 / 2887
Регистрация: 21.04.2018
Сообщений: 33,063
Записей в блоге: 2
14.10.2019, 19:38
Лучший ответ Сообщение было отмечено serg_78 как решение

Решение

serg_78, ну вы намутили!
Класс Program зачем сделали вложенным в класс cofn?
Так веселее?

Разделите эти классы и лучше даже по разным файлам.

Второе. Сравнение чисел с плавающей запятой дело тонкое.
В "железе" эти числа хранятся с двоичной мантиссой. А для пользователя выводятся/водятся в десятичном виде.
Но не все десятичные числа можно точно предоставить в двоичном виде.
0.1 десятичная не возможно предоставить в двоичном виде.
Поэтому добавив из десять раз вы не получите единицу.
На какие-то доли число будет отличаться.
Но для пользователя будет выводиться единица....

Поэтому числа с плавающей запятой принято сравнивать с учётом допустимой погрешности.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
           static void Main(string[] args)
            {
                float eps = 0.00001;
                cofn a = new cofn(); a.e = 1.0F;
                for (a.q = 0.0F; a.q < 6.0F; a.q=a.q+.1F)
                {
                    if (Math.Abs(a.q - a.e) <= eps) { Console.ReadKey(); }
                    else
                    {
                        Console.Write(a.W(a.q)+"  ");
                    }
                }
                Console.ReadKey();
            }
2
2 / 2 / 0
Регистрация: 26.07.2015
Сообщений: 46
14.10.2019, 19:40  [ТС]
Спасибо за миниатюру, а не могли бы Вы подсказать как избежать "мелочи" после запятой?
0
291 / 193 / 104
Регистрация: 14.11.2017
Сообщений: 489
14.10.2019, 19:46
serg_78, уважаемый Элд Хасп уже показал как это сделать и немного объяснил о причине. Если хотите разобраться почему так - почитайте статейку-другую о неточности чисел с плавающей точкой. Их в интернете в изобилии.
0
2 / 2 / 0
Регистрация: 26.07.2015
Сообщений: 46
14.10.2019, 19:58  [ТС]
Спасибо большое!)) Поищу статьи в интернете))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.10.2019, 19:58
Помогаю со студенческими работами здесь

Не срабатывает условие в цикле
Не срабатывает код при x=1.6, точнее условие. Но если записать не просто x&lt;=1.6f, а записать Math.Round(x,2) &lt;= 1.6f - то все...

Не срабатывает условие проверки метода
public string SearcheNumber(string n) { if (Int32.Parse(n) &lt;= 10 &amp;&amp; Int32.Parse(n) &lt;= 999) { ...

Не срабатывает условие внутри цикла
Создал 2 переменные типа int - recnr и lastrec. Присваиваю обоим переменным значение 0. Присваиваю переменной recnr значение 25. ...

Запуск потоков в цикле: не срабатывает условие выполнения цикла
есть метод, запускающий выполнение каждой итерации в отдельном потоке: private void ThreadSend(String text) { ...

Почему не срабатывает оператор if?
Здравствуйте! Из-за интереса к физике я решил сделать программу, чтобы вручную не считать по формулам. На мое удивление программа вышла...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru