在c/c++中我们经常由于需要,要把浮点型数据(float、double)转换成整形数据(各种int),下面我给大家介绍一下我所知道的,希望能给大家以后的编程带来方便:
1.普通的强制转换:可实现 “下行”整型化——即将浮点数变成小于它的最大整数
c标准 int i;
double x=5.4;
i=(int)x;
此时我们得到的i的值为5;即将浮点型的小数部分去掉。
c++标准 int i;
double x=5.4;
i=int(x);
所得结果与前者一样,i的值为5,即将浮点型的小数部分去掉。
2.实现四舍五入(m舍n入):
想几舍几入最简单的办法是在原数上加个0.n就可以了,如:想四舍五入就——5.4 int(5.4+0.5)=5
5.5 int(5.5+0.5)=6
又如:想二舍三入就——5.2 int(5.2+0.7)=5
5.3 int(5.3+0.7)=6
3.实现“上行”整型化:即
①使用c/c++标准库函数:ceil() 需要加载头文件c中加载#include<math.h> c++中加载#include<cmath>
具体如:int i; double x=5.4; i=ceil(x); // i 等于6
int i; double=2.0; i=ceil(x); // i 等于2
②自己编写函数,实现“上行”整型化:即将浮点数转换成大于它的最小的整数。
举例—if(x-(int)x) i=(int)x+1; //如果 x-(int)x不等于0(这里实际上是 大于0),则 i 等于 i 的“下行”整型化加1
else i=(int)x; //否则(即x-(int)x=0) i 等于(int)i 这里表面上是进行了“下行”运算,实际上
x=n.0 (int) x 就是将 2.0 变成 2 。
在日常编程中,我们经常需要将
浮点数
转
换为
整数
或者将
整数
转
换为
浮点数
。在C/
C++
编程中,我们可以使用强制类型
转
换操作符,例如’(int)float_number’,将
浮点数
直接
转
换为
整数
。同样地,我们也可以使用显式类型
转
换操作符,例如’(float)int_number’,将
整数
强制
转
换为
浮点数
。实际上,这种
转
换只是在
整数
后面加上一个虚拟的小数点,将其
转
换为
浮点数
。以上就是将
浮点数
转
换为
整数
和将
整数
转
换为
浮点数
的方法介绍,希望本文能够对开发者有所帮助。将
浮点数
转
换为
整数
——
浮点数
和
整数
之间的
转
换方法详解。
二、
数据
类型
主要掌握:
1.值类型:int
整型
,float
浮点型
(单精度), double 双精度,char 字符型,bool 布尔型(两种状态true与false),datetime 日期时间
2.引用类型:string 字符串类型
a.字符串与字符的区别:string类型使用 “”,char用”,可以说字符串是字符的集合。eg:string s=”abc”;char s1=’a‘,’b’,’c’;
在vc中,如果你将一个
浮点数
强制
转换成
一个
整数
,比如int i = (int)f;那么简单的一句话,就有可能被编译器
转
换为一个函数调用,就是_ftol2,参数为一个
浮点数
,开始函数调用前,该参数已经被压入浮点寄存器堆栈st(0)中,取整规则为去尾,即偏向0。浮点寄存器堆栈一共从st(0)到st(7),可以看做一个循环队列。堆栈顶端为st(0),st(0)简称st _ftol2:
0040142C ...
C++
从float到int
一次在写代码的时候,天真的将一个double强行
转
换到int,以为能够得到double中的
整数
部分,结果却得到0。那个时候挺费解,就去查了一下double的存储方式,才发现
浮点型
的存储方式和int的是大相径庭。
整理一下资料,简单介绍一下浮点这种存储方式,希望能够帮助到一些朋友。
一、浮点的存储方式
在
C++
中一个float是32位,一个doub
正常的float
转
换为 int 的情况是采用去尾巴的方式,也就是说去掉小数点后面的数值。
1. 常规的float
转
换为 int :
例如: 9.34 = (int) 9 ; 9.99 = (int) 9 。
#include
int main()
float i = 9.34;
float j = 9.99;
int a, b;
a = (int) i;
C++
种
浮点数
有以下四种取整方式:ceil()、floor()、round()、int()
ceil() floor() round()都在cmath头文件下定义
每种方法之间都有些许的差异(废话)
话不多说,直接总结
x为
浮点数
(
整数
也可以)
floor(x) 向下取整,取小于等于x的
整数
;
ceil(x) 向上取整,取大于等于x的
整数
;
round(x) 四舍五入取整;
int(x) 向0取整,取近0端
整数
;
代码&执行结果
#include double floor(doublex);float floorf(floatx);long double floorl(long doublex);double floor(double x);double ceil(double x);使用floor函数。floor(x)返回的是小于或等于x的最大
整数
。如: floor(10.5) == 10 floor(-...
这几天接触到了一个问题就是:
浮点数
转
化为
整数
的方法,因为平时这方面用的比较少所以有很多知识都忘记了,所以今天结合工具书,将这部分内容做个实验加深印象。同时也给有需要的小伙伴做以参考。
测试C语言
浮点数
转
化为
整数
的方法
方法1:强制
转
换,直接舍弃
#include <stdio.h>
int test01(f){
int a;
a = (int)f;//暴力
转
换,直接舍弃小数部分,只截取
整数
return a;
int main(void