鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 11063216906

[已解决]浮点数存取问题

[复制链接]
 楼主| 发表于 12 分钟前 | 显示全部楼层
FishC 发表于 2026-6-20 11:20
确实不是这样。让我用通俗的方式帮你理清浮点数的实际存储机制。

首先,float 类型在内存中占用固定的32 ...

C语言中 double类型强制转化int 是四舍五入还是小数裁剪
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 12 分钟前 | 显示全部楼层
11063216906 发表于 2026-08-06 21:51
FishC 发表于 2026-6-20 11:20
确实不是这样。让我用 ...


在 C 语言中,将 double 强制转换成 int 时,既不是四舍五入,也不是简单的“向下取整”,而是 **直接截断小数部分**,也就是 **向零取整**(truncation towards zero)。

例如:
- (int)3.99  结果是 3
- (int)-3.99 结果是 -3

注意区别:
- 向零取整:3.99 变成 3,-3.99 变成 -3
- 向下取整(floor):3.99 变成 3,-3.99 变成 -4

所以它把小数部分直接扔掉,正数和负数都往零的方向靠拢。

如果你希望四舍五入,需要使用标准库中的 round() 函数,例如 int x = (int)round(3.6); 结果为 4。

如果小数超出 int 能表示的范围,结果是未定义行为,编译器可能给出错误值或异常,建议转换前先检查范围。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-8-6 22:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表