Округление чисел в C

CBeginner
Практиковаться сейчас

Введение

В этом лабораторном практикуме вы изучите, как выполнять операции округления в программировании на языке C. Вы начнете с объявления переменных с плавающей точкой, затем изучите использование различных функций округления, таких как round(), floor(), и ceil(), для манипулирования значениями. Наконец, вы выведете округленные результаты, чтобы наблюдать за различным поведением округления.

Этот практикум охватывает базовые навыки арифметических операций в C, предоставляя прочную основу для работы с числами с плавающей точкой и их методами округления.

Объявление переменных с плавающей точкой

В этом шаге вы узнаете, как объявлять и инициализировать переменные с плавающей точкой в C, что необходимо для выполнения операций округления.

Сначала создадим новый файл C для работы с переменными с плавающей точкой:

cd ~/project
nano rounding.c

Теперь добавьте следующий код в файл:

#include <stdio.h>

int main() {
    // Объявление переменных с плавающей точкой
    float num1 = 3.7;
    double num2 = 4.2;

    // Вывод исходных значений
    printf("Исходное значение float: %.1f\n", num1);
    printf("Исходное значение double: %.1f\n", num2);

    return 0;
}

Компилируем и запускаем программу:

gcc rounding.c -o rounding
./rounding

Пример вывода:

Исходное значение float: 3.7
Исходное значение double: 4.2

Рассмотрим код:

  • Мы используем float для чисел с одинарной точностью с плавающей точкой
  • Мы используем double для чисел с двойной точностью с плавающей точкой
  • Спецификатор формата %.1f отображает число с одним десятичным знаком
  • num1 и num2 инициализированы десятичными значениями

Использование функций (например, round, floor, ceil) для округления значений

В этом шаге вы узнаете, как использовать функции округления в C для обработки чисел с плавающей точкой. Мы изменим предыдущий файл rounding.c, чтобы продемонстрировать различные методы округления.

Откройте существующий файл:

cd ~/project
nano rounding.c

Замените предыдущее содержимое следующим кодом:

#include <stdio.h>
#include <math.h>

int main() {
    // Объявление переменных с плавающей точкой
    float num1 = 3.7;
    double num2 = 4.2;

    // Округление значений с помощью различных функций
    printf("Исходные значения:\n");
    printf("num1: %.1f, num2: %.1f\n\n", num1, num2);

    // Использование функции round()
    printf("Функция round():\n");
    printf("round(num1): %.0f\n", round(num1));
    printf("round(num2): %.0f\n\n", round(num2));

    // Использование функции floor()
    printf("Функция floor():\n");
    printf("floor(num1): %.0f\n", floor(num1));
    printf("floor(num2): %.0f\n\n", floor(num2));

    // Использование функции ceil()
    printf("Функция ceil():\n");
    printf("ceil(num1): %.0f\n", ceil(num1));
    printf("ceil(num2): %.0f\n", ceil(num2));

    return 0;
}

Компилируйте программу с библиотекой математических функций:

gcc rounding.c -o rounding -lm
./rounding

Пример вывода:

Исходные значения:
num1: 3.7, num2: 4.2

Функция round():
round(num1): 4
round(num2): 4

Функция floor():
floor(num1): 3
floor(num2): 4

Функция ceil():
ceil(num1): 4
ceil(num2): 5

Ключевые моменты о функциях округления:

  • round(): Округляет до ближайшего целого числа
  • floor(): Округляет вниз до ближайшего целого числа
  • ceil(): Округляет вверх до ближайшего целого числа
  • Флаг -lm используется для подключения математической библиотеки при компиляции
  • Спецификатор формата %.0f отображает целые числа без десятичных знаков

Вывод округленных результатов

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

Откройте существующий файл:

cd ~/project
nano rounding.c

Обновите код, чтобы продемонстрировать различные методы вывода:

#include <stdio.h>
#include <math.h>

int main() {
    // Объявление переменных с плавающей точкой
    float num1 = 3.7;
    double num2 = 4.2;

    // Демонстрация округления с различными форматами вывода
    printf("Демонстрация округления:\n");

    // Вывод округленных значений с различной точностью
    printf("1. Округленные значения:\n");
    printf("   round(num1) = %.0f\n", round(num1));
    printf("   round(num2) = %.0f\n\n", round(num2));

    // Вывод с шириной поля и точностью
    printf("2. Форматированные округленные значения:\n");
    printf("   Округленное num1 с шириной поля: %5.1f\n", round(num1));
    printf("   Округленное num2 с шириной поля: %5.1f\n\n", round(num2));

    // Вывод целочисленных и представлений с плавающей точкой
    printf("3. Целочисленные и представления с плавающей точкой:\n");
    printf("   num1 как целое число: %d\n", (int)round(num1));
    printf("   num2 как целое число: %d\n", (int)round(num2));

    return 0;
}

Компилируйте и запустите программу:

gcc rounding.c -o rounding -lm
./rounding

Пример вывода:

Демонстрация округления:
1. Округленные значения:
   round(num1) = 4
   round(num2) = 4

2. Форматированные округленные значения:
   Округленное num1 с шириной поля:   4.0
   Округленное num2 с шириной поля:   4.0

3. Целочисленные и представления с плавающей точкой:
   num1 как целое число: 4
   num2 как целое число: 4

Ключевые методы вывода:

  • %.0f удаляет десятичные знаки
  • %5.1f устанавливает ширину поля и точность
  • Приведение типа с помощью (int) преобразует в целое число
  • Различные спецификаторы формата управляют внешним видом вывода

Резюме

В этом лабораторном практикуме вы изучили объявление переменных с плавающей точкой, включая float и double, а также использование различных функций округления, таких как round(), floor(), и ceil(), для обработки этих значений. Вы вывели исходные значения, а затем использовали функции округления для отображения округленных результатов. Это позволило вам понять разное поведение этих функций и как их можно применять для округления чисел вверх, вниз или до ближайшего целого числа.