
1、采用强转的方式
float a = 11L; //定义一个float型变量,变量名为a,值为11,L表示是浮点型
int b = (int)a;//用(int)强制转换为整型b
2、采用Mathround方式
float a = 11L; //定义一个float型变量,变量名为a,值为11,L表示是浮点型
int b = Mathround(a);//采用round方式转换为整型
方法一: 使用stringstream
stringstream在int或float类型转换为string类型的方法中已经介绍过, 这里也能用作将string类型转换为常用的数值类型。
#方法二:使用atoi()、 atil() 、atof()函数 -----------------实际上是char类型向数值类型的转换
注意:使用 atoi 的话,如果 string s 为空,返回值为0则无法判断s是0还是空
C语言整型使用原码、反码、补码进行编码,而浮点型使用IEEE754进行编码,所以强制转换基本上是没有任何意思的,因为编码格式不一样。
正确的作法是使用c语言标准库中的floor和ceil函数来进行向下或者向上取整。比如:#include <stdioh>
#include <mathh>
int main()
{
double d = 11;
int up = ceil(d);
int down = floor(d);
printf("up=%d\tdown=%d\n", up, down);
return 0;
}结果:up=2
down=1
#include<stdioh>
//#include<mathh>
int main()
{
int i;
int i2;
int siz;
float P[14]={0,1,2,3,1,1,5,1,23,61,500,130,5,0};
siz=sizeof(P);//打印出数组P的字节数
printf("sizeof=%d\r\n",siz);
for(i=0;i<14;i++)
{
printf("P[intp]=%d\r\n",floor(P[i]));//打印出P数组的每一个元素值,以int型显示
}
for(i2=0;i2<14;i2++)
{
printf("P[floatp]=%f\r\n",P[i2]);//打印出P数组的每一个元素值,以float型显示
}
}
#include<stdioh>
#include<mathh>
int main()
{
int i;
int i2;
int siz;
float P[14]={0,1,2,3,1,1,5,1,23,61,500,130,5,0};
siz=sizeof(P);//打印出数组P的字节数
printf("sizeof=%d\r\n",siz);
for(i=0;i<14;i++)
{
printf("P[intp]=%d\r\n",floor(P[i]));//打印出P数组的每一个元素值,以int型显示
}
for(i2=0;i2<14;i2++)
{
printf("P[floatp]=%f\r\n",P[i2]);//打印出P数组的每一个元素值,以float型显示
}
}
好像VC++60运行的结果只有强制转换有用,不知道是不是我写的语句有问题
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)