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
  • 注意在 c99 里没有 round 只能接收 double 为参数,接收 float 为参数的函数为 roundf。c++里都可以。
  • 除了第一个,后面三个函数均返回 float (或 double )类型,这是因为原数据的表达范围超过 int 的返回类型。

Q. E. D.

类似文章:
编程 » C++, 算法
一个短小、高效的 C++函数,用来判断指定日期是星期几:
编程 » C++, 编译错误
在 gcc 中,存在继承关系的模版类,子类无法直接访问父类的成员,即使该成员是 protectedpublic
编程 » C++, C++11
花括号初始化是 C++11 引入的一种初始化方法。
编程 » C++, 内存检查, Linux
获取程序占用的内存量,是一个诡异的需求。但程序写多了,有时候还真需要,尤其是代码运行出现问题的时候。
C++内存检查和性能分析工具 valgrind 里介绍了 valgrind 的安装,以及用于效率分析 profiler 工具。valgrind 最本来的功能是内存检查。这篇文章做简单的介绍。
C++内存检查和性能分析工具 valgrind 里介绍了 valgrind 的安装,以及用于效率分析 profiler 工具。valgrind 最本来的功能是内存检查。这篇文章做简单的介绍。
编程 » C++, 编译错误
在 gcc 中,存在继承关系的模版类,子类无法直接访问父类的成员,即使该成员是 protectedpublic