JavaRush /Курсы /C# SELF /Числа и символы в C#

Числа и символы в C#

C# SELF
6 уровень , 1 лекция
Открыта

1. Какие бывают числа?

В программировании мы постоянно работаем с числами — от возраста пользователя до числа звёзд в галактике или копеек на банковском счету. Но разные задачи требуют разных видов чисел: иногда важно хранить только целые числа, иногда — очень точные дроби, а иногда нужны числа "без минусов".

Целые числа (int и другие)

Целое число — это число без дробной части.
В C# чаще всего используют тип int, но кроме него есть ещё несколько вариантов, которые отличаются размером и диапазоном.

  • int — основной "рабочий" тип для целых чисел. Он вмещает очень большие (и маленькие) значения, а памяти занимает не так уж и много.
    Например, для подсчёта лайков, возраста, количества дней в году почти всегда будет использоваться int.
  • long — используется, если значения могут быть очень большими (например, миллиарды или триллионы).
    Пример: хранить сумму всех просмотров YouTube за всю историю.
  • short — экономичный, но редко используемый тип. Подходит там, где много одинаковых маленьких значений (например, аудиоданные, цветовые компоненты).
  • byte — для ещё меньших значений, особенно в графике и работе с файлами, где важна экономия памяти.

Дробные числа (double, float, decimal)

Иногда нужно работать с числами, у которых есть дробная часть. Например, температура воздуха, средний балл студента, цена товара с копейками.

  • double — это тип "по умолчанию" для хранения дробных чисел. Достаточно точный для большинства вычислений (пример: 3.1415926535…).
  • float — более лёгкий и менее точный тип, чаще встречается в задачах компьютерной графики или обработке больших массивов данных, где важна экономия памяти.
  • decimal — предназначен для финансовых и бухгалтерских задач, когда важно сохранить точность до копеек, чтобы избежать "потери" из-за особенностей хранения дробных чисел. Например, для хранения баланса на счету, стоимости товара, обменного курса.

Специальные числовые типы

В C# есть дополнительные числовые типы для особых случаев:

  • uint, ulong, ushort — "беззнаковые" типы, позволяют использовать только положительные значения, зато диапазон в 2 раза больше по сравнению с их "знаковыми" аналогами.
  • sbyte — маленький, знаковый тип (для компактного хранения отрицательных и положительных значений от -128 до 127).
  • BigInteger — если нужно работать с огромными числами, превышающими стандартные диапазоны, например, в криптографии или вычислениях в астрономии.

2. Знаковые и беззнаковые числа

Знаковый тип может хранить как положительные, так и отрицательные числа. Это удобно, когда значения могут быть "и выше, и ниже нуля": например, температура, баланс счёта, высота относительно уровня моря.

Беззнаковый тип — только ноль и положительные числа. Подходит, когда минуса не может быть — например, количество людей в комнате, байты в файле, время.

Пример:

  • int (знаковый): -10, 0, 50
  • uint (беззнаковый): 0, 10, 1000

Используя беззнаковый тип, можно вместить в переменную в 2 раза больше максимального значения (так как нет "отрицательной половины диапазона"). Их используют, когда точно известно, что значение не может быть отрицательным.

Знаковые целые типы

Тип Размер Диапазон значений Пример использования
sbyte
1 байт -128 до 127 -128, 0, 127
short
2 байта -32 768 до 32 767 -1000, 0, 32000
int
4 байта -2 147 483 648 до 2 147 483 647 -1000000, 0, 2000000
long
8 байт -9 223 372 036 854 775 808
до 9 223 372 036 854 775 807
-10_000_000_000, 1

Беззнаковые целые типы

Тип Размер Диапазон значений Пример использования
byte
1 байт 0 до 255 0, 128, 255
ushort
2 байта 0 до 65 535 1000, 65000
uint
4 байта 0 до 4 294 967 295 100, 4000000000
ulong
8 байт 0 до 18 446 744 073 709 551 615 1, 18_000_000_000_000

Дробные типы

Тип Размер Пример значений Описание
float
4 байта 3.14f, -0.001f одинарная точность (7 цифр)
double
8 байт 3.1415, -1.7E+308 двойная точность (15-16 цифр)
decimal
16 байт 0.1m, 12345.6789m высокая точность для финансов

3. Суффиксы для чисел

В некоторых ситуациях нужно явно указать, какого типа ты хочешь использовать число. Это делается при помощи суффиксов:

  • L или l — для типа long (например, 10000000000L)
  • U или u — для типа uint (например, 123U)
  • F или f — для типа float (например, 3.14f)
  • D или d — для типа double (обычно не нужен, потому что дробные числа без суффикса — это double)
  • M или m — для типа decimal (например, 99.99m — особенно важно в деньгах!)

Если не указать суффикс, то по умолчанию целое число считается int, а дробное — double. Например, 42 это int, а 3.14 это double.

Зачем это нужно? Например, чтобы не получить ошибку при присваивании большого числа переменной типа long:


long bigNumber = 9000000000L; // если убрать L, будет ошибка компиляции

А для денег лучше всегда использовать decimal с суффиксом m:


decimal price = 999.99m;

4. Разделитель в виде подчёркивания _

Когда числа длинные, легко запутаться в нолях. Для красоты и удобства чтения в C# можно использовать подчёркивания внутри числа.


int population = 146_700_000;
long stars = 100_000_000_000L;
Использование подчёркиваний для удобства чтения чисел

Это абсолютно легально: компилятор игнорирует подчёркивания, а вам удобно сразу "на глаз" видеть разряды. Главное — не ставить подчёркивание в начале, в конце, после точки или перед суффиксом.

5. Символьный тип char

Иногда в программе нужно работать не с числами, а с отдельными символами: буквой, цифрой, знаком, и даже пробелом. Для этого есть специальный тип — char.

Что такое char?
Это переменная, которая хранит один символ:

  • латинскую или кириллическую букву ('A', 'я')
  • цифру ('5')
  • спецсимвол ('#', '%', '@')
  • управляющий символ ('\\n' — перевод строки)

Особенности:

  • Значение типа char записывается в одиночных кавычках: char letter = 'B';
  • На самом деле внутри char хранится числовой код символа (в системе Unicode), поэтому char можно сравнивать, преобразовывать в int и даже выполнять простую арифметику:

char a = 'A';
char b = (char)(a + 1); // 'B'
int code = a;           // 65 — код буквы 'A'

Можно использовать специальные символы, например: char tab = '\\t'; // символ табуляции

Зачем нужен char?
Для работы с текстом посимвольно (например, проверки первой буквы в строке, поиска знаков препинания, считывания пароля по символу).

2
Задача
C# SELF, 6 уровень, 1 лекция
Недоступна
Такие резные числа
Такие резные числа
2
Задача
C# SELF, 6 уровень, 1 лекция
Недоступна
Все любят Unicode
Все любят Unicode
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Ra Уровень 35 Student
1 сентября 2025
"Такие резные числа" - резьба по дереву?