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