yhkn.net
当前位置:首页 >> C程序 int转FloAt >>

C程序 int转FloAt

把int a;转换为float类型有两种办法:1、手动强制转换: float b = (float)a; //强制转换2、自动转换,基本上所有语言都是会在混合运算时自动强转为统一数据类型,统一为最高精度的,所以 a*1.0 或 a/1.0就可以:float b = a*1.0; //自动转换

#include <stdio.h> int main ( void ) { int a,b; float c; scanf ("%d%d",&a,&b); c=(float)a/(float)b; printf("%.2f\n",c); return 0; }

float的时候算的才准确! int 的时候在运算的时候都只保留整数 比如你算 1 / 2 的时候用float得到的是0.5, 用int的的话得到的就是0了,你可以试试看.很显然你for循环中出现了除法,不能整除的时候得到的结果用int就会跟正确的(float得到的)相差越大

高类型向低类型强制转化是在数据前加类型标识符 故应该是float c = (float)a/(float)b; 而且只需加一个(float)就够了,因为在一个表达式中计算的结果会自动向最高类型转换.

直接类型转换即可.int i=5;float t=(float)i;

可能存在定义的问题.最好别使用浮点数类型的数值,在要求准确数字的话,可以用长整形的.浮点数的使用,要全部的数值都用浮点数表示,不要在运算时,用整数去加减浮点数,这样的话,计算的结果会有计算机定义,天知道结果是什么型的.所以,使用要谨慎,最好别用.我的经验是这样的.希望对你有帮助.

int rand(void) 返回数据类型为int型 所以a=rand()%11也为int型 你却用float型当然它会那么提示

# include int main(void) { float a; /*变量a定义为 单精度浮点型(float)*/ a =50 % 23; /*求的是50比23的模,模为4,4为整形(int),显然与变量a的类型不 符,导致编译错误*/ printf("a = %d\n", a); /*%d为整形数据输出符,%f为浮点型输出*/ return 0; } 解决方法:把%d改为%f

一般有float有24位用来表示有效数字,对于整数来说,超过2^24之后,很多数字都没法精确表示了,比如2^24+1.如果把2^24+1这个int转化位float,就只能转换成最接近的2^24.具体你把下面这个代码运行一下就知道了:#include <stdio.h>#include <math.h>int main(void){ int a = pow(2,24) + 1; float b; b = a; printf("a = %d\n",a); printf("b = %lf\n",b);}

对于int型,可以调用函数itoa.char*itoa(int value,char*string,int radix);功能为将任意类型的数字转换为字符串.int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等.float和double类型没有特

lyhk.net | knrt.net | hyfm.net | pxlt.net | qhnw.net | 网站首页 | 网站地图
All rights reserved Powered by www.yhkn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com