【C/C++】强制转换(int)与floor/ceil函数的不同
来源:互联网 发布:藏獒崩盘 知乎 编辑:程序博客网 时间:2024/06/15 06:26
相信很多新手程序员在遇到浮点数赋值给整型时。为了方便习惯将一个浮点类型强制转换为整型。而这是非常不正确的,会出现错误。下面做一些说明。
强制转换(int)与floor的区别。
首先floor返回小于或等于它的最大整数。
而(int)在大多数情况返回整数部分。
所以他们的求值在负数的情况是不一样的,如floor(-3.2)=-4,(int)-3.2=-3,这点想必也有很多人知道。
但是看了一些解释,绝大多数人认为floor和(int)在正数的情况下是等价的。这点是完全错误的!而且反例也不难找到。参考以下代码:
#include <stdio.h>#include <math.h>int main(){ float i=90; int a=(int)(i*0.3); int b=floor(i*0.3); float out=i*0.3; printf("a=%d b=%d\n",a,b); printf("%f\n",out);}
用gcc编译运行,结果如下:
a=26 b=27
27.000000
可以看到,强制转换和floor的结果不同!
所以,为了精确,写代码的时候请注意此情况。
0 0
- 【C/C++】强制转换(int)与floor/ceil函数的不同
- C语言 floor函数 ceil函数
- C语言数学函数ceil(), floor(), round()
- C/C++取整函数ceil(),floor()
- C/C++ 取整函数ceil(),floor()
- C/C++ 取整函数ceil(),floor()
- C/C++取整函数ceil(),floor()
- C/C++ 取整函数ceil(),floor()
- C语言数学函数ceil(), floor(), round()
- C/C++ ceil和floor函数
- C/C++ 数学函数 ceil(), floor(), round()
- C/C++取整函数ceil(),floor()
- C/C++ 取整函数ceil(),floor()
- C语言数学函数ceil(), floor(), round()
- C语言数学函数:ceil(), floor(), round()
- C/C++ 取整函数ceil(),floor()
- C/C++ 取整函数ceil(),floor()
- C/C++ 取整函数ceil(),floor()
- NYOJ-33 蛇形填数
- Sat Solver -- Minisat & Sat4j 使用报告
- iOS: 布局可视化语法 Visual Format Syntax
- C#控制台小实验——随机数
- cocos2d-x安卓开发环境搭建(windows+eclipse+ndk)
- 【C/C++】强制转换(int)与floor/ceil函数的不同
- 职场中如何做好心理调控
- CVS简介
- Linux基本常用命令
- Netty源码学习——EventLoopGroup原理:NioEventLoopGroup分析
- “模”法无边-设计模式3-工厂家族
- 职场学做“功夫熊猫”
- day81
- [ios] assign retain copy 举例解释