///////////////////////////////////////////////////////////////////////////////
//
// FileName : atof_ftoa.cpp
// Author : Jimmy Han
// Date : 2014/07/07 17:09 v1
// : 2014/07/12 21:40 v2
//
///////////////////////////////////////////////////////////////////////////////
#include <stdio.h> // for print
#include <ctype.h> // for isspace, isdigit
#define ARRAY_MAX 20 /*
*atof 将字符串数组转换为double数字
*char s[] 输入字符数组
*double 输出浮点型
*/
double atof(char s[])
{
int i, sign;
int rate = 1;
bool bDot = false;
double ret; //skip the space
for(i = 0; isspace(s[i]); i++)
; //get the sign
sign = s[i] == '-' ? -1 : 1; //store the sign
if(s[i] == '-' || s[i] == '+')
i++; for(ret = 0; s[i] != '\0'; i++)
{
if(s[i] == '.'){
bDot = true;
i++;
}
//if interger part
if(!bDot)
ret = 10*ret + s[i] - '0';
//if dot part
else{
rate*=10;
//has to be explicit double cast, or int/int will not be right
ret = ret + (double)((s[i] - '0'))/rate;
}
}
return sign*ret;
} /*
*ftoa transfer double to char array
*dnum input double number
*str input char array
*len input double length
*/ char *ftoa(double dnum,char *str,int len)
{
int arrayNum[ARRAY_MAX];
int pointPos=1;//the position of point
int index=0;
int i=0;
if(dnum > 0)
{
//have only one bit for interger part
while(dnum >= 10.0)
{
pointPos++;
dnum/=10;
} //convert to an integer array firstly
for(i=0;i<len;i++)
{
if(i == pointPos)
{
//'0'-2 represent '.'
arrayNum[i]=-2;
//next for loop
continue;
}
//get the integer part
int num=dnum;
arrayNum[i]=num;
dnum-=num;
dnum*=10;
} //convert the integer to string
for(i=0;i<len;i++)
{
str[i]=arrayNum[i]+'0';
}
str[len]='\0';
}
return str;
} int main()
{
//atof test
char s[] = "-92.5";
double result = atof(s);
printf("char=%s, double=%f\n",s, result); //ftoa test
double flt=34.4324;
char str[ARRAY_MAX];
char *ret=ftoa(flt,str,7);
printf("double=%f,char=%s\n",flt,ret); return 0;
}

  

面试题目-atof与ftoa的更多相关文章

  1. HTML/CS3相关面试题目

    一.HTML/CS3基本面试题目. 1. 常用那几种浏览器测试? 1.1浏览器:IE,Chrome(谷歌),FireFox(火狐),Safari(苹果计算机的最新操作系统Mac OS X中的浏览器,使 ...

  2. PHP面试题目搜集

    搜集这些题目是想在学习PHP方面知识有更感性的认识,单纯看书的话会很容易看后就忘记. 曾经看过数据结构.设计模式.HTTP等方面的书籍,但是基本看完后就是看完了,没有然后了,随着时间的推移,也就渐渐忘 ...

  3. 总结CSS面试题目的考察点及常见布局问题整理

    整理网上流传的若干份面试题目,突发奇想,总结关于CSS面试题目的考察点,发现问题大多围绕几个属性和几种题目,水平有限,仅供参考. 写这个博文内心有种莫名奇妙的自我谴责感,实在不应该把面试层叠样式“应试 ...

  4. 【转】asp.net c# 网上搜集面试题目大全(附答案)

    asp.net c# 网上搜集面试题目大全(附答案) http://www.cnblogs.com/hndy/articles/2234188.html

  5. 2016年Web前端面试题目汇总

    转载: 2016年Web前端面试题目汇总 以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中未解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,欢 ...

  6. 33条C#、.Net经典面试题目及答案

    33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如".NET中类和结构的区别"."ASP.NET页面之间传递值的几种方式? ...

  7. 33条C#、.Net经典面试题目及答案[zt]

    33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如“.NET中类和结构的区别”.“ASP.NET页面之间传递值的几种方式?”,并简明扼要的给出了答案,希 ...

  8. C/C++ 笔试、面试题目大汇总 转

    C/C++ 笔试.面试题目大汇总 这些东西有点烦,有点无聊.如果要去C++面试就看看吧.几年前网上搜索的.刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善. 1.求下面函数的返回值( ...

  9. Android面试题目及其答案

    转自:http://blog.csdn.net/wwj_748/article/details/8868640 Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应 ...

随机推荐

  1. 转:strcmp函数实现及分析

    转自:strcmp函数实现及详解 strcmp函数是C/C++中基本的函数,它对两个字符串进行比较,然后返回比较结果,函数形式如下:int strcmp(constchar*str1,constcha ...

  2. FATAL ha.BootstrapStandby: Unable to fetch namespace information from active NN at ***

    This problem (Unable to fetch namespace information from active NN) occurs, because the active namen ...

  3. Mvc4_传值取值应用

    Mvc路由运行机制:   首先,Web 浏览器向服务器发送一条URL 请求,如http://HostName/ControllerName/ActionName/Parameters. 其次,请求被A ...

  4. Java常见错误

    1.NullPointerExceptin 空指针异常 a.引用没有初始化就使用 b.引用置空了,仍然被使用 2.IndexOutofBoundsException 下标越界 a.数组下标小于0 或者 ...

  5. entity reference在views中的运用

    一个views block可以获取从url过来的nid,某个node的有entity reference字段, 填入一点数据,然后在views里关联一下这个entity reference field ...

  6. jquery 全选功能

    1.直接全选(复选框名字要统一) <input type="CHECKBOX" id="cbSelectAll" onclick="$('inp ...

  7. Linux源码安装mysql步骤

    创建文件夹: mkdir  /usr/local/webserver 安装必要依赖包      yum -y install gcc gcc-c++ make ncurses-devel安装cmake ...

  8. 老生常谈的Hibernate二级缓存

    理解缓存的定义: 缓存(Cache): 计算机领域非常通用的概念.它介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运 ...

  9. mysql查询优化(持续更新中)

    1.        索引不会包含有NULL值的列 (1)   应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描 (2)   数据库设计时不要让字段的默认值 ...

  10. excel中的单位换算函数convert()

    有时,我们在处理数据的时候,需要进行单位换算,比如“7小时24分”换算成小时,可以直接除以或乘以相应的进制来计算,但是在excel中,有一个convert()函数更加方便: 此函数属于工程函数,平时可 ...