跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

C++如何将double转int_C++浮点数取整与四舍五入方法

直接赋值截断小数,round()实现四舍五入,floor/ceil向下向上取整,加0.5法仅适用正数。推荐使用std::round()。 在C++中,将
double
类型转换为
int
时,直接赋值会截断小数部分(即向零取整),但实际开发中我们常常需要四舍五入或其他取整方式。以下是几种常用方法。 1. 直接赋值:截断取整(向零取整) 将
double
直接赋给
int
变量时,编译器会自动截断小数部分,只保留整数部分。
double d = 3.7; int i = d; // i = 3 double d2 = -3.7; int i2 = d2; // i2 = -3(向零取整)
这种方式不是四舍五入,而是简单地去掉小数部分。 2. 使用round()函数:四舍五入 C++ 标准库
提供了
round()
函数,可实现数学上的四舍五入。 立即学习 “ C++免费学习笔记(深入) ”;
#include double d = 3.7; int i = static_cast(round(d)); // i = 4 double d2 = -3.7; int i2 = static_cast(round(d2)); // i2 = -4
注意: 返回值是
double
,需显式转为
int
。 C函数速查手册(CHM版) C函数速查手册(CHM版) 下载 3. 其他取整函数(向下、向上取整)
还提供以下函数:
floor(x)
:向下取整(向负无穷)
ceil(x)
:向上取整(向正无穷)
#include double d = 3.2; int a = static_cast(floor(d)); // 3 int b = static_cast(ceil(d)); // 4
4. 手动四舍五入技巧(适用于正数) 对正数可通过加0.5再截断实现四舍五入:
double d = 3.7; int i = static_cast(d + 0.5); // i = 4
注意: 此法对负数不适用。例如
-3.7 + 0.5 = -3.2
,转为
int
得
-3
,不符合四舍五入规则。若需支持负数,应使用
round()
。 基本上就这些常见方法。推荐优先使用
std::round()
,简洁且符合标准。手动加0.5适合简单场景,但要注意符号问题。

相关文章