You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言中将数值向下取整到两位小数(修改实际值)

C语言实现数值向下取整到两位小数(修改数值本身)

利用math.h的floor()函数实现

math.h里没有直接向下取整到两位小数的内置函数,但可以基于floor()(向下取整到整数)通过缩放数值来实现:

#include <math.h>

int main() {
    double x = 0.1234;
    x = floor(x * 100) / 100;  // x变为0.12
    
    double y = 3.14159;
    y = floor(y * 100) / 100;  // y变为3.14
    
    // 负数场景示例:向下取整两位小数应为-0.13
    double z = -0.1234;
    z = floor(z * 100) / 100;  // z变为-0.13
    return 0;
}

编译时需链接数学库(例如GCC编译需加-lm参数)。

不依赖math.h的实现方法

仅针对正数场景时,可通过强制类型转换截断小数部分:

int main() {
    double x = 0.1234;
    x = (int)(x * 100) / 100.0;  // x变为0.12
    
    double y = 3.14159;
    y = (int)(y * 100) / 100.0;  // y变为3.14
    return 0;
}

注意:该方法不适用于负数,比如-0.1234会被转为-0.12,不符合向下取整的逻辑(正确结果应为-0.13)。

规避浮点数精度问题

由于二进制浮点数无法精确表示部分十进制小数,可能出现0.29 * 100 = 28.999999999999996这类精度误差,导致取整错误。可通过添加极小偏移量解决:

x = floor((x + 1e-8) * 100) / 100;

内容的提问来源于stack exchange,提问作者Nox5692

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:40:17