Главная страница » C# » 10. Числа с плавающей точкой
Числа с плавающей точкой (floating-point numbers) используются в C# для представления дробных чисел. Они позволяют работать с вещественными числами, которые имеют десятичную часть, например:3.14
, -0.5
, 123.456
.
C# поддерживает несколько типов данных для чисел с плавающей точкой, различающихся по размеру и точности.
Тип | Размер (бит) | Диапазон значений | Точность | Пример |
---|---|---|---|---|
float | 32 | ±1.5 × 10⁻⁴⁵ до ±3.4 × 10³⁸ | ~6-7 знаков | 3.14159f |
double | 64 | ±5.0 × 10⁻³²⁴ до ±1.7 × 10³⁰⁸ | ~15-16 знаков | 3.14159265358979 |
decimal | 128 | ±1.0 × 10⁻²⁸ до ±7.9 × 10²⁸ | ~28-29 знаков | 3.1415926535897932384626433m |
📌 Важно:
float
занимает меньше памяти, но менее точен.double
— стандартный выбор для большинства вычислений.decimal
имеет высокую точность и используется для финансовых расчетов.float
float pi = 3.14f; // Суффикс "f" обязателен
Console.WriteLine(pi);
📌 Почему нужен f
?
По умолчанию дробные числа в C# воспринимаются как double
, и без f
будет ошибка «неявное приведение невозможно».
double
(по умолчанию)
double e = 2.718281828459045;
Console.WriteLine(e);
decimal
(для точных расчетов)
decimal price = 19.99m; // Суффикс "m" обязателен
Console.WriteLine(price);
📌 Почему m
?decimal
требует суффикса m
, чтобы не было ошибки «неявное приведение невозможно».
double a = 10.5, b = 3.2;
Console.WriteLine(a + b); // 13.7
Console.WriteLine(a - b); // 7.3
Console.WriteLine(a * b); // 33.6
Console.WriteLine(a / b); // 3.28125
%
Остаток от деления также работает с double
и float
:
Console.WriteLine(10.5 % 3.2); // 0.9
Числа с плавающей точкой не всегда хранят точное значение.
double x = 0.1 + 0.2;
Console.WriteLine(x); // 0.30000000000000004
Console.WriteLine(x); // 0.30000000000000004
📌 Почему так?
Числа 0.1
и 0.2
не могут быть представлены точно в двоичной системе, что вызывает небольшую ошибку округления.
C# предоставляет несколько методов округления в классе Math
:
Метод | Описание | Пример |
---|---|---|
Math.Round(x) | Округляет до ближайшего целого | Math.Round(2.7) → 3 |
Math.Round(x, n) | Округляет до n знаков после запятой | Math.Round(2.718, 2) → 2.72 |
Math.Floor(x) | Округление вниз | Math.Floor(2.9) → 2 |
Math.Ceiling(x) | Округление вверх | Math.Ceiling(2.1) → 3 |
Пример:
double num = 2.718281828;
Console.WriteLine(Math.Round(num, 2)); // 2.72
Console.WriteLine(Math.Floor(num)); // 2
Console.WriteLine(Math.Ceiling(num)); // 3
==
Из-за погрешности сравнение ==
может работать неожиданно:
double a = 0.1 + 0.2;
double b = 0.3;
Console.WriteLine(a == b); // false!
double epsilon = 0.0000001;
Console.WriteLine(Math.Abs(a - b) < epsilon); // true
Числа с плавающей точкой (float
, double
, decimal
) широко используются для вычислений, но имеют особенности:
✔ float
– экономит память, но не очень точен.
✔ double
– стандартный вариант, лучший баланс точности и скорости.
✔ decimal
– высокая точность, но медленнее, подходит для финансовых расчетов.
⚠ Важно помнить про погрешность округления и использовать Math.Round()
и Math.Abs()
для точных вычислений.
Теперь вы умеете работать с вещественными числами в C#! 🚀
Напишите программу, которая:
Пример кода:
using System;
class Program
{
static void Main()
{
Console.Write("Введите радиус круга: ");
double radius = Convert.ToDouble(Console.ReadLine());
double area = Math.PI * Math.Pow(radius, 2);
Console.WriteLine($"Площадь круга: {Math.Round(area, 2)}");
}
}
Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024-2025 Все права защищены. CodeFor.