在 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("Original float value: %.1f\n", num1);
    printf("Original double value: %.1f\n", num2);

    return 0;
}

编译并运行该程序:

gcc rounding.c -o rounding
./rounding

示例输出:

Original float value: 3.7
Original double value: 4.2

让我们来分析一下这段代码:

  • 我们使用 float 表示单精度浮点数
  • 我们使用 double 表示双精度浮点数
  • %.1f 格式说明符以保留一位小数的形式显示数字
  • num1num2 用十进制值进行初始化

使用函数(例如 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("   宽度为 5 且精度为 1 的 num1 舍入值:%5.1f\n", round(num1));
    printf("   宽度为 5 且精度为 1 的 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. 格式化后的舍入值:
   宽度为5且精度为1的num1舍入值:   4.0
   宽度为5且精度为1的num2舍入值:   4.0

3. 整数和浮点表示形式:
   num1转换为整数: 4
   num2转换为整数: 4

关键打印技术:

  • %.0f 去除小数点
  • %5.1f 设置字段宽度和精度
  • 使用 (int) 进行类型转换可转换为整数
  • 不同的格式说明符控制输出外观

总结

在本实验中,你学习了如何声明浮点型变量,包括 floatdouble,以及如何使用各种舍入函数,如 round()floor()ceil() 来操作这些值。你打印了原始值,然后使用舍入函数显示舍入后的结果。这使你能够理解这些函数的不同行为,以及它们如何用于向上、向下或舍入到最接近的整数。