Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 18.03.2019
Сообщений: 58

Проверить, является ли исходный текст правильно построенным числом с плавающей точкой

25.04.2019, 19:36. Показов 3269. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать процедуру IsFloat, проверяющую является ли исходный текст правильно построенным числом с плавающей точкой. Для представления текста используйте класс string.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.04.2019, 19:36
Ответы с готовыми решениями:

Процедура для проверки, является ли исходный текст правильно построенным числом с плавающей точкой
1. Напишите процедуру IsFloat, проверяющую, является ли исходный текст правильно построенным числом с плавающей точкой. Для представления...

Процедура проверяющая является ли исходный текст правильно построенным целым числом
Здравствуйте, прошу помощи в решении данной задачи, начал изучать C# и не знаю как сделать. Условие:"Напишите процедуру IsInt,...

Проверить, является ли исходный текст правильно построенным идентификатором
Напишите процедуру IsIder, которая проверяет является ли исходный текст правильно построенным идентификатором. Для представления текста...

9
Фрилансер
805 / 312 / 148
Регистрация: 13.02.2019
Сообщений: 1,071
25.04.2019, 21:02
Цитата Сообщение от Bjk3229 Посмотреть сообщение
написать процедуру IsFloat, проверяющую является ли исходный текст правильно построенным числом с плавающей точкой
C#
1
2
3
4
        public bool IsFloat(string s)
        {
            return float.TryParse(s, out float f);
        }
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
25.04.2019, 21:07
C#
1
2
3
4
5
6
7
8
9
10
11
        static bool IsFloat(string str)
        {
            return Regex.IsMatch(str, @"^-?\d+\.?\d+?$");
        }
        static void Main(string[] args)
        {
            Console.WriteLine(IsFloat("123"));
            Console.WriteLine(IsFloat("-12.3"));
            Console.WriteLine(IsFloat("123.."));
            Console.WriteLine(IsFloat("123b234"));
        }
это если писать замену TryParse
1
0 / 0 / 0
Регистрация: 18.03.2019
Сообщений: 58
25.04.2019, 21:11  [ТС]
а если через пользовательский ввод?
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
25.04.2019, 21:18
C#
1
2
var str = Console.ReadLine();
Console.WriteLine(IsFloat(str));
1
0 / 0 / 0
Регистрация: 18.03.2019
Сообщений: 58
25.04.2019, 21:54  [ТС]
Что-то все равно не получается, ошибки выдает, я конечно извиняюсь, но как будет выглядеть код в общем виде вместе с пользовательским вводом
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
25.04.2019, 22:30
Лучший ответ Сообщение было отмечено Bjk3229 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Text.RegularExpressions;
 
namespace ConsoleApp3
{
    class Program
    {
        static bool IsFloat(string str)
        {
            return Regex.IsMatch(str, @"^-?\d+\.?\d+?$");
        }
        static void Main(string[] args)
        {
            Console.Write("input number");
            var number = Console.ReadLine();
            Console.WriteLine(IsFloat(number));
 
        }
    }
 
}
1
0 / 0 / 0
Регистрация: 18.03.2019
Сообщений: 58
25.04.2019, 23:29  [ТС]
Diamante, это же метасимволы? @"^-?\d+\.?\d+?$" что означает?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16130 / 11254 / 2888
Регистрация: 21.04.2018
Сообщений: 33,088
Записей в блоге: 2
26.04.2019, 12:39
Цитата Сообщение от Diamante Посмотреть сообщение
это если писать замену TryParse
Regex - это не вполне корректная замена TryParse. Ваш вариант (если я правильно его понял) может давать неверный результат в зависимости от культуры.

По самой логике задачи возможность парсера в тип надо проверять тем же методом которым и будет производиться парсер в этот тип.
Так, наиболее вероятно, парсер в тип будет делаться через float.Parse() (Convert.ToFloat() - тоже самое), то и проверять надо методом TryParser().

Если же проверять через Regex, то и парсер в тип надо делать через этот же Regex.


Цитата Сообщение от Bjk3229 Посмотреть сообщение
но как будет выглядеть код в общем виде вместе с пользовательским вводом
Более правильный вариант от asn31337.

Полный код такой - за основу взят код Diamante, но изменён метод проверки на вариант от asn31337:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Text.RegularExpressions;
 
namespace ConsoleApp3
{
    class Program
    {
        static bool IsFloat(string s) => float.TryParse(s, out float f);
        static void Main(string[] args)
        {
            Console.Write("input number");
            var number = Console.ReadLine();
            Console.WriteLine(IsFloat(number));
 
           if (IsFloat(number)) // Как используется в практике
                Console.WriteLine("Вы ввели число: " + float.Parse(number)); 
           else
                Console.WriteLine("Вы ввели недопустимое значение");
        }
    }
 
}
Добавлено через 4 минуты
Самый правильный вариант оформить IsFloat как метод расширения string.
C#
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace ConsoleApp3
{
    static class Program
    {
        static bool IsFloat(this string s) => float.TryParse(s, out float f);
        static float ToFloat(this string s) => float.Parse(s);
        static void Main(string[] args)
        {
            Console.Write("input number");
            var number = Console.ReadLine();
            Console.WriteLine(number.IsFloat());
 
           if (number.IsFloat()) // Как используется в практике
                Console.WriteLine("Вы ввели число: " +number.ToFloat()); 
           else
                Console.WriteLine("Вы ввели недопустимое значение");
        }
    }
 
}
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
26.04.2019, 23:07
Элд Хасп, так я не говорил что это замена, задача учебная, и обернуть TryPase() в метод с другим названием, это не учеба задача состоит именно в проверке введенной строки и ничего более
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.04.2019, 23:07
Помогаю со студенческими работами здесь

Является ли исходный текст правильно построенным идентификатором
Помогите,погибаю. Напишите процедуру IsIder, проверяющую, является ли исходный текст правильно построенным идентификатором. Для...

Проверить, является ли заданный текст правильно построенным идентификатором
Напишите процедуру IsIder, проверяющую, является ли исходный текст правильно построенным идентификатором. Для представления текста...

Определить, является ли заданный текст правильно построенным идентификатором
Задание - определить является ли заданный текст правильно построенным идентификатором(ппи) C#, вопрос, как это сделать? И что это вообще...

Проверка, является ли исходный текст правильно построенным идентификатором
Помогите погибаю!!! процедуру IsIder, проверяющую является ли исходный текст правильно построенным идентификатором. Для представления...

Проверить, является ли исходный текст правильно построенным идентификатором
На С# в Windows Forms!!! Напишите процедуру IsIder, проверяющую является ли исходный текст правильно построенным идентификатором. Для...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru