搜索
bottom↓
回复: 10

请教:浮点数如何转换成字符串类型?

[复制链接]

出0入0汤圆

发表于 2009-7-24 14:50:29 | 显示全部楼层 |阅读模式
IAR 上直接有这样的库吗?

比如我的 A = 0.3485;

怎么样转换成 aa[] = " 0.3485";

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2009-7-24 15:07:54 | 显示全部楼层
sprintf

出0入0汤圆

 楼主| 发表于 2009-7-24 15:55:35 | 显示全部楼层
它可以保存在aa[] 这数组里面吗

出0入0汤圆

发表于 2009-7-24 16:00:09 | 显示全部楼层
macros.h        常用宏
BIT(x)        第x位输出1
flash        指定只可用于flash的数据
WDR()或_WDR()        复位开门狗定时器
SEI()或_SEI()        开启所有中断
CLI()或_CLI()        关闭所有中断
NOP()或_NOP()        空操作
…        …
ctype.h        字符类型函数
int isalpha(int ch)        若ch是字母返回非0值,否则返回0
int isalnum(int ch)        若ch是字母或数字返回非0值,否则返回0
int iscntrl(int ch)        若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F), 返回非0值,否则返回0
int isdigit(int ch)        若ch是数字('0'-'9')返回非0值,否则返回0
int isgraph(int ch)        若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0
int islower(int ch)        若ch是小写字母('a'-'z')返回非0值,否则返回0
int isprint(int ch)        若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0
int ispunct(int ch)        若ch是可打印字符(不含空格)、数字或字母返回非0值,否则返回0
int isspace(int ch)        若ch是空格(' '),水平制表符('\t'),回车符('\r'),走纸换行('\f'),垂直制表符('\v'),换行符('\n'),返回非0值,否则返回0
int isupper(int ch)        若ch是大写字母('A'-'Z')返回非0值,否则返回0
int isxdigit(int ch)         若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0
int tolower(int ch)        若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')
int toupper(int ch)        若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')
math.h/mathx.h新版(自动替换旧版)        浮点类型函数,改进的加上了x
float fabs(float x)        返回双精度参数x的绝对值
float exp(float x)        返回指数函数e为底x的幂
float exp10(float x)        返回指数函数10为底x的幂
float ldexp(float value,int exp);        返回value*2^exp的值
float log(float x)         返回logex的值,e为底
float log10(float x)        返回log10x的值,10为底
float pow(float x,float y)        返回x的y次方的值
float sqrt(float x)        返回x的平方根值
float acos(float x)        返回x的反余弦cos-1(x)值,x为弧度
float asin(float x)        返回x的反正弦sin-1(x)值,x为弧度
float atan(float x)        返回x的反正切tan-1(x)值,x为弧度
float atan2(float y,float x)         返回y/x的反正切tan-1(x)值,y的x为弧度,-π到π
float cos(float x)        返回x的余弦cos(x)值,x为弧度
float sin(float x)        返回x的正弦sin(x)值,x为弧度
float tan(float x)        返回x的正切tan(x)值,x为弧度
float cosh(float x)        返回x的双曲余弦cosh(x)值,x为弧度
float sinh(float x)        返回x的双曲正弦sinh(x)值,x为弧度
float tanh(float x)        返回x的双曲正切tanh(x)值,x为弧度
float ceil(float x)        返回对应x整数,小数四舍五入
float floor(float x)        返回不大于x的最大整数
float modf(float value,float *iptr)        将浮点数value分解成整数部分和小数部分,整数给&iptr,返回小数
float fmod(float x,float y)        返回x/y的余数
float frexp(float x,int *eptr)        将浮点数x分成数字部分y(尾数)和以2为底的指数部分,x=y*2^n 0.5 <=y<1 (返回),n到*pexp
float fround(float x);        返回最接近x的整形数
stdio.h        标准输入输出函数
…        …
…        读写内置EEPROM函数
…        …
stdlib.h        标准库和内存分配函数
int abs(int i)        返回整型参数i的绝对值
void *calloc(size_t nelem,size_t size)        分配nelem个数据项的内存连续空间,每个数据项的大小为size字节并且初始化为0。返回首地址或错误0
void exit(status)        终止程序运行,退出main函数,进入启动函数确定的退出点,并在改点死循环
void free(void *ptr)        释放ptr所指向的内存区
void *malloc(size_t size)        分配size字节的储存区,返回内存区地址
void _NewHeap(void *start,void *cnd)        初始化内存分配程序空间的堆。
void *realloc(void *ptr,size_t size)        重新分配ptr所指向内存区的大小为size字节,size可以比原来大或小,返回内存区指针
void srand(unsigned seed)        初始化随机数发生器
int rand()        产生一个0到RAND_MAX随机数并返回这个数
double atof(const char *nptr)        将字符串nptr转换成双精度浮点数并返回这个浮点数
float atoi(char *nptr)        将字符串nptr转换成整数并返回这个整数
long atol(char *nptr)        将字符串nptr转换成长整数并返回这个整数
char* ftoa(float f, int *status)        strcpy(c,ftoa(x,&nStatus));转换实数为字符串
void itoa(char *buf,int value,int base)        转换整数为字符串,BASE 进制
void ltof(char *buf , long value ,int base)        转化长整数为字符串
long strtol(char *str,char **endptr,int base)        按照“base”的格式转化“s"中起始字符为长整型数。如果“endptr”不为空,*endptr将设定“s”中转换结束位置
unsigned long strtoul(char *s,char **end ptr,int base)        除了返回类型为无符号长整型数外,其余同“strtol”
string.h        字符串函数
void *memchr(void *s,int c,size_t n)        在字符串s中搜索n个字节长度以寻找与c相同的字符,若成功,返回匹配字符的地址指针,否则NULL
int memcmp(void *s1,void *s2,size_t n)        对字符串s1和s2的前n个字符进行比较。如果相同返回0,如果s1大于s2 +1,否则-1
void *memcpy(void *s1,void *s2,size_t n)        复制s2中n个字符至s1,
void *memmove(void *s1,void *s2,size_t n)        复制s2中n个字符至s1,复制区可以重叠
void *memset(void *s,int c,size_t n)        在s中填充n个字节的c,返回s1
char *strcat(char *s1,char *s2)        复制s2到s1的结尾,返回s1
char *strcpy(char *dest,const char *src)        将字符串src复制到dest,返回dest
char *strchr(char *s,int c)        检索并返回字符c在字符串s中第一次出现的位置
int strcmp(const char *s1,const char *s2)        比较字符串s1与s2的大小,并返回s1=s2则0,s1>s2则1,否则-1
size_t strcspn(const char *s1,const char *s2)        在s1中找与s2匹配的第一个字符,包括NULL,返回s1中找到的匹配字符的索引
size_t strlen(const char *s)        返回字符串s的长度
char *strncat(char *dest,char *src,size_t maxlen)        将字符串src中最多maxlen个字符复制到字符串dest中
int strncmp(const char *s1,const char *s2,size_t maxlen)        比较字符串s1与s2中的前maxlen个字符
char *strncpy(char *dest,const char *src,size_t maxlen)        复制src中的前maxlen个字符到dest中
char *strpbrk(const char *s1,const char *s2)        基本与strcspn相同,返回s1匹配字地址指针
char *strrchr(const char *s,int c)        扫描最后出现一个给定字符c的一个字符串s,返回其指针
size_t strspn(char *s1,const char *s2)        扫在s1搜与s2不匹配的第一个字符,返回不匹配字符的索引
char *strstr(const char *s1,const char *s2)        扫描字符串s1,并返回第一次出现s2的位置
stdarg.h        变量参数函数
…        …














































char strcpy(char *dest,const char *src)        将字符串src复制到dest
char strdup(const char *s)        将字符串s复制到最近建立的单元
int stricmp(const char *s1,const char *s2)        比较字符串s1和s2,并返回s1-s2
char strlwr(char *s)        将字符串s中的大写字母全部转换成小写字母,并返回转换后的字符串
int strnicmp(const char *s1,const char *s2,size_t maxlen)        比较字符串s1与s2中的前maxlen个字符
char strnset(char *s,int ch,size_t n)        将字符串s的前n个字符置于ch中
char strrev(char *s)        将字符串s中的字符全部颠倒顺序重新排列,并返回排列后的字符串
char strset(char *s,int ch)        将一个字符串s中的所有字符置于一个给定的字符ch
char strtok(char *s1,const char *s2)        检索字符串s1,该字符串s1是由字符串s2中定义的定界符所分隔
char strupr(char *s)        将字符串s中的小写字母全部转换成大写字母,并返回转换后的字符串

float cabs(struct complex znum)        返回复数znum的绝对值
long labs(long n)        返回长整型参数n的绝对值
float hypot(float x,float y)        返回直角三角形斜边的长度(z),x和y为直角边的长度,z2=x2+y2
float poly(float x,int n,float c[])        从参数产生一个多项式
float pow10(int p)        返回10p的值
float frexp(float value,int *eptr)        返回value=x*2n中x的值,n存贮在eptr中
数学函数,所在函数库为math.h、stdlib.h、string.h、float.h       

       
char *ecvt(float value,int ndigit,int *decpt,int *sign)        将浮点数value转换成字符串并返回该字符串
char *fcvt(float value,int ndigit,int *decpt,int *sign)        将浮点数value转换成字符串并返回该字符串
char *gcvt(float value,int ndigit,char *buf)        将数value转换成字符串并存于buf中,并返回buf的指针
char *ultoa(unsigned long value,char *string,int radix)        将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数
char *ltoa(long value,char *string,int radix)        将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数
char *itoa(int value,char *string,int radix)        将整数value转换成字符串存入string,radix为转换时所用基数
float atof(char *nptr)        将字符串nptr转换成浮点数,并返回这个数,错误返回0
int atoi(char *nptr)        将字符串nptr转换成整型数, 并返回这个数,错误返回0
long atol(char *nptr)        将字符串nptr转换成长整型数,并返回这个数,错误返回0
float strtod(char *str,char **endptr)        将字符串str转换成浮点数,并返回这个数,
int  matherr(struct exception *e)        用户修改数学错误返回信息函数(没有必要使用)
float _matherr(_mexcep why,char *fun,float *arg1p,float *arg2p,float retval)        用户修改数学错误返回信息函数(没有必要使用)
unsigned int _clear87()        清除浮点状态字并返回原来的浮点状态
void  _fpreset()        重新初使化浮点数学程序包
unsigned int _status87()        返回浮点状态字

出0入0汤圆

发表于 2009-7-24 16:10:50 | 显示全部楼层
貌似是这样  sprintf(aa,"%d",A);

出0入0汤圆

 楼主| 发表于 2009-7-24 16:52:49 | 显示全部楼层
char *ecvt(float value,int ndigit,int *decpt,int *sign)        将浮点数value转换成字符串并返回该字符串
char *fcvt(float value,int ndigit,int *decpt,int *sign)        将浮点数value转换成字符串并返回该字符串

这两个是在哪个库的?
我的是IAR FOR ARM
#include<stdlib.h>
这里面没有那两函数的

出0入42汤圆

发表于 2009-7-24 19:54:04 | 显示全部楼层
上sprintf好了。
要不自己写吧,库函数体积不小。

出0入0汤圆

发表于 2009-7-24 20:24:23 | 显示全部楼层
char a[16];sprintf(a,"%f",f);
但是加了浮点库确实代码量大了很多。

出0入0汤圆

发表于 2009-7-24 20:26:17 | 显示全部楼层
#include<stdlib.h>
float x;
char str[10];//不能定义为char* str,数组长度一定要大于浮点数的总位数+1
sprintf(str,"%6.2f",x);//6表示浮点数总位数,2表示小数位数

出0入0汤圆

发表于 2009-7-24 20:26:20 | 显示全部楼层
或者你本来用整型把0.3485存储成3485,这样变成字符串应该很简单吧

出0入0汤圆

发表于 2014-4-16 15:46:55 来自手机 | 显示全部楼层
这个正在研究,浮点数太难道了,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 19:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表