Главная страница » 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.
Язык сайта: