C++的浮点数取整

作者:, 发表于

C++的浮点数转整数有四种方法,直接类型转换、round、floor、ceil。其效果如下表:

x -1.9 -1.5 -1.1 1.1 1.5 1.9
static_cast<int>(x) -1 -1 -1 1 1 1
std::round(x) -2 -2 -1 1 2 2
std::floor(x) -2 -2 -2 1 1 1
std::ceil(x) -1 -1 -1 2 2 2

尤其注意

  • 类型转换并不等价于round,也不是floor,而是向0靠拢。
  • round函数在0.5的位置是远离0的(和类型转换相反), round(0.5)=1round(-0.5)=-1
  • round, floor, ceil函数的返回值都还是浮点数!
  • 注意在c99里没有round只能接收double为参数,接收float为参数的函数为roundf。c++里都可以。
  • 除了第一个,后面三个函数均返回float(或double)类型,这是因为原数据的表达范围超过int的返回类型。

Q.E.D.


上一篇:用valgrind检查C++程序的内存泄漏2016年2月5日
C++内存检查和性能分析工具valgrind里介绍了valgrind的安装,以及用于效率分析profiler工具。valgrind最本来的功能是内存检查。这篇文章做简单的介绍。 内

下一篇:模版类继承需显示声明子类成员2016年5月5日
在gcc中,存在继承关系的模版类,子类无法直接访问父类的成员,即使该成员是protected或public。 一个简单的例子 #include <iostream> template <class


  • 支持使用微薄、微信和QQ的账户登陆进行评论。由各自网站直接认证,不会泄露你的密码。
  • 登陆后可选择分享评论到所绑定的社交网络,如微薄、人人和QQ空间。
  • 评论提交后无法修改。如需修改,请删除原评论再重新提交。
  • 评论支持LaTeX代码,行内公式请用\(a+b=c\),行间公式请用\[a+b=c\]。公式只支持英文字符。