C语言 将浮点数限制为 小数点后两位

C语言 浮点数 float 或 double 类型的变量,并且想让它在输出时只显示 小数点后两位。C 标准库提供了 printf 和 snprintf 等函数,可以帮助我们格式化浮点数。浮点数在计算机中是以二进制形式存储的,有些数无法精确表示,因此在进行浮点数运算时可能会产生误差。本文主要介绍将浮点数限制为 小数点后两位。

1、使用 printf 格式化输出

printf 函数可以通过格式化控制浮点数的显示精度。使用 %.2f 可以指定显示两位小数。

#include <stdio.h>

int main() {
    double num = 3.14159265358979;
    printf("%.2f\n", num);  // 输出 3.14
    return 0;
}

2、使用 snprintf 格式化并存储值

如想要将格式化后的浮点数存储为字符串,可以使用 snprintf

#include <stdio.h>

int main() {
    double num = 3.14159265358979;
    char str[10];
    snprintf(str, sizeof(str), "%.2f", num);
    printf("Formatted string: %s\n", str);  // 输出 "3.14"
    return 0;
}

3、四舍五入浮点数值

如想 修改浮点数的值(即,实际存储的数值保留两位小数),而不仅仅是格式化输出,可以通过数学方法来完成。常见的做法是通过乘法和除法来进行四舍五入。

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

int main() {
    double num = 3.14159265358979;
    num = round(num * 100.0) / 100.0;  // 四舍五入到两位小数
    printf("%.2f\n", num);  // 输出 3.14
    return 0;
}

还可以使用 floor ceil 来控制浮点数的舍入方式。

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

int main() {
    double num = 3.14159265358979;
    num = floor(num * 100.0 + 0.5) / 100.0;  // 向上舍入
    printf("%.2f\n", num);  // 输出 3.14
    return 0;
}

4、使用示例

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

int main() {
    double num = 3.14159265358979;

    // 格式化输出
    printf("Formatted output: %.2f\n", num);  // 输出 3.14

    // 四舍五入修改数值
    num = round(num * 100.0) / 100.0;
    printf("Rounded value: %.2f\n", num);  // 输出 3.14

    // 使用 snprintf 保存格式化后的字符串
    char str[10];
    snprintf(str, sizeof(str), "%.2f", num);
    printf("Formatted string: %s\n", str);  // 输出 "3.14"

    return 0;
}

推荐阅读
cjavapy编程之路首页