c语言里怎么把float转换为char型?

作者&投稿:诺待 (若有异议请与网页底部的电邮联系)
C语言下怎么把float数组转成char数组~

不知你想要实现何种程度的转换,如果对数组元素逐个用强制类型转换,其结果往往出乎我们预料,原因是浮点数所表示的范围远远超过字符型。如果为了原样访问浮点数的格式,可用字符型指针访问,获得其在内存中的存在形式,这在一些应用中是很实用的。

一、C语言中数值型数据分为两大类:整型和浮点型
整型:char
int
short
long
浮点型:float(单精度)
double(双精度)
二、浮点型数据转存到字符串中
char
str[30];
//定义一个字符数组,来存储数据
double
d=123.456;
//定义一个浮点型变量d
sprintf(str,"%f",
d
);
//格式串同printf()格式要求
sprintf(str,"%.2f",
d
);
//保留两位小数,第三位四舍五入
三、整型数据转存到字符串中
char
str[30];
int
i=123;
sprintf(str,
"%d",
i
);
四、0-9之间的数据转为字符
C语言中,字符型数据在存储时,实际上存储的是字符的ASCII值,字符'0'到'9'对应的ASCII是连续的,其值为48-57,所以,0-9数值转为字符时,只需要加上'0'就可以了,如:
char
ch;
int
i;
i=1;
ch=i+'0'
;
printf("ch=%c
ascii=%d",
ch,
ch
);
//按%c输出,就是字符1,按%d输出就是ASCII值49

可以使用强制转换,其一般形式为:(类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (float) a 把a转换为浮点型,(int)(x+y) 把x+y的结果转换为整型。

这种方法显然对浮点型数据的精度会有影响,且注意最终输出的形式不同结果也是不同的,若要保留数字形式输出则为%d形式。

在程序中的使用举例:

注意不同输出格式对应的输出是不同的。

扩展资料:

在使用强制转换时应注意以下问题:

1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。

2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

参考资料来源:百度百科-C语言类型强制转换



如果 x 是 float 型,c 是 char 型,这样就可以把类型转换:c = (char) x; 所谓转换是这样的。例如:float x = 65.1;char c;c = (char) x;这样 c 里存的就是 65,即字符 'A'。 补充回答:还有另外一种“转换”,就是 Arvin 2010-11-06 14:08 </SPAN>所说的,不过不是 float 型转换成 char 型,而是把 float 型的数字转换成为“字符型数组”的表达方式。这种转换最简单的方法就是借用 <stdio.h> 里的 sprintf 函数,把实数打印到数组里。</p>例如:float x = 65.1;char a[20];sprintf(a, "%g", x);这样子,数组 a 里就会保存字符串 "65.1",即 a[0] = '6'; a[1] = '5'; a[2] = '.'; a[3] = '1'; a[4] = '\0'; 不知道楼主要的,是哪一种转换。请选择满意的答案采纳。如有疑问,欢迎追问。

强制转化例如:fioat x (char)x就实现了转化


C语言求1+sqrt(1+2)+sqrt(1+2+3)+…+sqrt(1+2+…+k) 要求flo
include <stdio.h> include <stdlib.h> include <math.h> void main(int argc, char *argv[]) { unsigned int uimax, uiidx =0, uilast = 0;double dsum = 0;if (argc < 1) return;uimax = (unsigned int)atoi(argv[1]);for (;uiidx < uimax; ++uiidx) { uilast += uiidx;...

c语言 0.9不足1但是按1来计算 怎么搞啊?高手指点
如果四舍五入的话,float x;x+0.5 int y = x;如果要求0.9的话,可以(int)(x+0.1)

在C语言中,5种基本数据类型的存储空间长度的排列顺序为(a)。 (选择一...
A Tobur c 中 char 1 int 2 long int 4 float 4 double 8 vc++6.0 还要 乘以二 即 2 4 8 16 16

...怎么办啊?因为下载了白金版软件,现在TOUCH FLO变成英文的,怎么办...
请问你手机是 行货的多普达S900是吗 ?还是水货的? 我很遗憾的告诉你 你手机 ROM被 你下载的软件把语言覆盖了 。要解决的办法 也只有用电脑找到TOUCH FLO 中文语言包 刷进去 是很复杂的事情。~~~『还有个方法你 你把手机硬启动一下 说不定是可以恢复 中文的 应该是可以的』 (前提你手机要是...

flo游戏怎么玩如何下载
下载地址:http:\/\/www.37moyu.com\/azyx\/yzxx\/floyouxiv20115.html 类型:安卓游戏-益智休闲 版本:FLO游戏v2.0.115 大小:33.00M 语言:中文 平台:安卓APK 推荐星级(评分):★★★ 游戏标签: FLOGame 虐心手游 FLO Game游戏是一款重力感觉类手机游戏,游戏玩法简单,但是玩起来...

在教学中,如何发挥体态语言作用?
二,用体形语言包容接受幼儿的语言不正确 因为幼儿是在没有了解的语言自然环境中习得与汉语彻底不一样的第二种语言,在学习英语的全过程必然的会做错事,尤其是在音标发音层面,经常会把frog(小青蛙)称作flo-ger,把tree(树)称作tee,此刻大家不应该指责或责怪,那样做只能抑止幼儿的自学能力,严厉打击...

太阳花---各国语言怎么翻译
英语Sun flower 阿拉伯 زهرة الشمس爱沙尼亚lille.保加利亚сун - хуа.韩语태양 꽃意大利Il Sole di Fiori 俄语 подсолнечник 法语Tournesol 西班牙La flor del sol 罗马尼亚floarea - ...

求助,c语言一道题
输出结果是A。这是因为程序先读取了前面7个字符(Fig flo)到b[]的头上(覆盖了原有的前7个字符),然后gets(a);读取了余下的字符串(wer is red.)到a[]中。输出时,先输出a串 wer is red.然后紧接着输出b串(Fig flo is blue.)

高频生活英语口语句子
英语口语是被英语国家人民普遍应用的口头交流的语言形式。英语口语通常是通过声音传播的。英语文学作品中也常以书面形式记叙英语口语。下面是我为大家带来的高频生活英语口语句子,欢迎阅读。 高频生活英语口语句子 1. I think so. 我想是的。 2. In a word, yes. 一句话,是的。 3. You're perfectly correct....

邢台市18675225052: c语言里怎么把float转换为char型? -
肇邦枸橼: 如果 x 是 float 型,c 是 char 型,这样就可以把类型转换: c = (char) x; 所谓转换是这样的.例如: float x = 65.1; char c; c = (char) x; 这样 c 里存的就是 65,即字符 'A'. 补充回答: 还有另外一种“转换”,就是 Arvin 2010-11-06 14:08 所说的...

邢台市18675225052: c语言如何把float型转化为char型 -
肇邦枸橼: float a;char b; b=(char)a;

邢台市18675225052: C语言下怎么把float数组转成char数组 -
肇邦枸橼: 不知你想要实现何种程度的转换,如果对数组元素逐个用强制类型转换,其结果往往出乎我们预料,原因是浮点数所表示的范围远远超过字符型.如果为了原样访问浮点数的格式,可用字符型指针访问,获得其在内存中的存在形式,这在一些应用中是很实用的.

邢台市18675225052: C语言 数组类型转换,怎样将一个float类型的数组转换成字符(串)数组? -
肇邦枸橼: 1:小端存储 float 转成HEX字符串 float y=0.1111111119389534f; char a[9]; unsigned char *p; p=(unsigned char *)(&y); sprintf(a,"%02X%02X%02X%02X",p[0],p[1],p[2],p[3]); 2:HEX字符串转float char a[9]="398EE33D"; float y; unsigned char ...

邢台市18675225052: 如何将float转换为string -
肇邦枸橼: 在C语言中,可以通过_gcvt函数实现这个功能 将float数据转换为string 在java语言中,可以通过如下几种方法:Float f = 0.0f; String str = String.valueOf(f); String str1 = f + ""; String str2 = f.toString(); System.out.println(str); System.out.println(str1); System.out.println(str2); 这几种方法都是可以的.

邢台市18675225052: C语言 float转char 带小数点 -
肇邦枸橼: 是以整型的位数为限的,输入位数太长了不行. //#include "stdafx.h"//vc++6.0加上这一行. #include "stdio.h"// void main(void){ double rn=9876.5678; int i=1000000000,k,pt=1,n; char a[12]=""; printf("Enter a floating point number...\nrn=")...

邢台市18675225052: C语言 数组类型转换,怎样将一个float类型的数组转换成字符(串)数组?
肇邦枸橼: char char_[7]=(char *)V的.float value[8],a=0; char value0_char[2],value1_char[10],value2_char[10],value3_char[10]…… sprintf(value0_char, "%-3f",value[0]); //"-"负号表示左对齐,3 sprintf(value1_char, "%-10f",value[1]); //"-"负号表示左对齐,10:占10个空

邢台市18675225052: C语言怎样将double转换成一个字节的char类型.比如3.1415小数去掉后用一个字节来装??? -
肇邦枸橼: 大哥你没懂我意思啊,你这么简单我还上来问啥?float强制转换为int才是直接去掉小数点,因为都是4个字节,但是float强制转换为char类型就不行了!还有我不要用字符串来承接,你那种方法我也知道,我就是要一个字节来承接.

邢台市18675225052: 在C语言里,怎么把floa数据类型,转换成unsigned char数据类型? -
肇邦枸橼: 你这种操作要进行指针强制转换才能进行,执行结果也是可以琢磨出来的;但即便是进行了操作也可能达不到你的目的……因为float型数在计算机中是用尾数和阶码方式表示的,阶码用移码表示,尾数用原码表示,且尾数被变成了大于1而小于1的数;而unsigned char型数是用被码表示的;虽然它们都用4个字节表示,但表示方法差异很大.所以你不如说说要想达到什么目的,看看能为你想个什么办法……

邢台市18675225052: 在C语言中怎样编写代码实现把浮点数转换成字符串 -
肇邦枸橼: #include<stdio.h> #include<stdlib.h> #include<string.h> #defineucharunsignedchar #defineuintunsignedintintpows(intx) { inty=1; for(;x!=0;x--) y=y*10; returny; }voiddisplay_result(doubleresult) { if(result<0) { printf("-"); display_result(-result); } if(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网