ftoa浮点型转换成字符串

#include <stdio.h>

bool ftos(float num,char *s,int n)

{

int temp;

float t=num;

int pn=0;

bool flag_s=true;

bool flag_z=false;

for(int i=n;i>0;i--)

t=t*10;

printf("%f\n",t);

temp=t;

printf("%d\n",temp);

if(temp<0)

{

temp=-temp;

t=-num;

flag_s=false;

}

if(temp==0)

{

if(n>0)

{

for( pn=0;pn<n;pn++)

{

*(s+pn)=‘0‘;

}

*(s+pn)=‘\.‘;

++pn;

}

*(s+pn)=‘0‘;

++pn;

if(!flag_s){

*(s+pn)=‘\-‘;

++pn;

}

*(s+pn)=‘\0‘;

}

else

{

while(temp>0)

{

if(pn==n && n>0)

{

*(s+pn)=‘\.‘;

++pn;

}

else{

*(s+pn)=(temp%10)+‘0‘;

temp=temp/10;

++pn;

}

}

while(pn<n)

{

*(s+pn)=‘0‘;

++pn;

}

if(pn==n)

{

*(s+pn)=‘\.‘;

++pn;

if(flag_s){

*(s+pn)=‘0‘;

++pn;

}

}

if(!flag_s){

if(t<1.0){

*(s+pn)=‘\.‘;

++pn;

*(s+pn)=‘0‘;

++pn;

}

*(s+pn)=‘\-‘;

++pn;

}

*(s+pn)=‘\0‘;

}

int i(0),j(pn-1);

while(i<j)

{

int temp=*(s+i);

*(s+i)=*(s+j);

*(s+j)=temp;

++i;

j--;

}

return true;

}

int main()

{

char s[20];

float num=123.456;

int n=3;

scanf("%f",&num);

scanf("%d",&n);

printf("float num is %f\n",num);

if(ftos(num,s,n))

{

printf("after convert is %s\n",s);

}

return 0;

}

时间: 2024-10-29 19:09:43

ftoa浮点型转换成字符串的相关文章

c语言将浮点型数据转换成字符串

在程序中,可能会遇到需要将浮点型的数据转换成字符串:  #include<stdio.h> void float2char(float,char*,int); int main() {     char buffer[10];     float2char(123.4567,buffer,10);     printf("%f 转换成字符串 %s\n",123.4567,buffer);     float2char(-654.321,buffer,10);     pri

谭浩强 c程序设计 8.17用递归法将一个整数n转换成字符串。例如,输入486,应输出字符串&quot;486&quot;。n的位数不确定,可以是任意位数的整数。

8.17用递归法将一个整数n转换成字符串.例如,输入486,应输出字符串"486".n的位数不确定,可以是任意位数的整数. #include <stdio.h> char str1[20];int i=0;long n;int main(){        int longToStr(long n);    char *revstr(char *str, int len);    printf("请输入一个整数n:\n");    scanf("

将整形数字(int)转换成字符串

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #include<string.h> void itoa(int n, char *buf) { int count = 0; char nu; char buf2[128] = { 0 }; //核心算法很简单 就是每次取出各位数字然后把数字转存进数组,中间有一个数组匿置的过程 do

浮点数转换成字符串函数

sprintf函数太大,在STM8上面根本不敢用,动不动就.text overflow.为了将采集的数值通过串口上传到计算机,只能自己写了一个浮点数转换成字符串的函数: #include <stdio.h> #include <stdint.h> static char table[]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; void num2char(char *str, double number, uint8_t

数字按照不同格式转换成字符串

如果自己写函数,不使用itoa怎么判断呢? 我们用通常的办法,对数字进行每位的除商,得到后与字符'0'相加. flag = 0; for(i=0;i<6;i++){ tmp = int(num/pow(10,5-i)); if(tmp != 0){ *str = 1; flag = 1; } if(*str != 0 || flag){ *str++ = tmp+'0'; num = num%int(pow(10,5-i)); } } 要注意的就是,我们设置标志位flag,为1之前的所有0都不输

前台 JSON对象转换成字符串 相互转换 的几种方式

在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用request进行接收.有时传递了几个数值,还好接收.但是如果传递一个json数组,这样后台接受的时候Request多个很麻烦,此时要按照类的格式或者 集合的形式进行传递.例如下面的例子: 前台按类的格式传递JSON对象: var jsonUserInfo = "{\"TUserName\&quo

输入流转换成字符串

/** * 输入流转换成字符串 * @param is * @param destCode * @return * @throws IOException */ public static String readFromStream(InputStream is,String destCode) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new by

JSON对象转换成字符串【JSON2.JS】

下载地址 https://github.com/douglascrockford/JSON-js JSON.JS和JSON2.JS的区别 JSON.JS使用的方法名称不同,用的是toJSONString()和parseJSON() ,使用的时候,和JQUERY的AJAX会产生冲突. JSON2.JS改进了上面的缺点 使用方法 在页面中添加json2.js的引用. <script type="text/javascript" src="/CoreResource/JS/j

Java中如何将字符串数组转换成字符串

如果将"字符串数组"转换成"字符串",只能通过循环,没有其他方法: public static String getExecSqlString(String str){ StringBuffer sb = new StringBuffer(); String prefixStr = str.substring(0,str.indexOf("(")); String subStr = str.substring(str.indesOf("