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 — «беззнакові» типи: дозволяють використовувати тільки нуль і додатні значення, зате діапазон удвічі більший порівняно з їх «знаковими» аналогами.
  • sbyte — маленький, знаковий тип (для компактного зберігання від’ємних і додатних значень від -128 до 127).
  • BigInteger — якщо потрібно працювати з величезними числами, що перевищують стандартні діапазони, наприклад, у криптографії чи обчисленнях в астрономії.

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

Знаковий тип може зберігати як додатні, так і від’ємні числа. Це зручно, коли значення можуть бути і вище, і нижче нуля: наприклад, температура, баланс рахунку, висота відносно рівня моря.

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

Приклад:

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

Використовуючи беззнаковий тип, можна вмістити у змінну удвічі більше максимального значення (бо немає «від’ємної половини діапазону»). Беззнакові типи застосовують, коли точно відомо, що значення не може бути від’ємним.

Знакові цілі типи

Тип Розмір Діапазон значень Приклад використання
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?
Для роботи з текстом на рівні символів (наприклад, перевірка першої літери в рядку, пошук знаків пунктуації, зчитування пароля символ за символом).

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ