面试题目-atof与ftoa
///////////////////////////////////////////////////////////////////////////////
//
// 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的更多相关文章
- HTML/CS3相关面试题目
一.HTML/CS3基本面试题目. 1. 常用那几种浏览器测试? 1.1浏览器:IE,Chrome(谷歌),FireFox(火狐),Safari(苹果计算机的最新操作系统Mac OS X中的浏览器,使 ...
- PHP面试题目搜集
搜集这些题目是想在学习PHP方面知识有更感性的认识,单纯看书的话会很容易看后就忘记. 曾经看过数据结构.设计模式.HTTP等方面的书籍,但是基本看完后就是看完了,没有然后了,随着时间的推移,也就渐渐忘 ...
- 总结CSS面试题目的考察点及常见布局问题整理
整理网上流传的若干份面试题目,突发奇想,总结关于CSS面试题目的考察点,发现问题大多围绕几个属性和几种题目,水平有限,仅供参考. 写这个博文内心有种莫名奇妙的自我谴责感,实在不应该把面试层叠样式“应试 ...
- 【转】asp.net c# 网上搜集面试题目大全(附答案)
asp.net c# 网上搜集面试题目大全(附答案) http://www.cnblogs.com/hndy/articles/2234188.html
- 2016年Web前端面试题目汇总
转载: 2016年Web前端面试题目汇总 以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中未解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,欢 ...
- 33条C#、.Net经典面试题目及答案
33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如".NET中类和结构的区别"."ASP.NET页面之间传递值的几种方式? ...
- 33条C#、.Net经典面试题目及答案[zt]
33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如“.NET中类和结构的区别”.“ASP.NET页面之间传递值的几种方式?”,并简明扼要的给出了答案,希 ...
- C/C++ 笔试、面试题目大汇总 转
C/C++ 笔试.面试题目大汇总 这些东西有点烦,有点无聊.如果要去C++面试就看看吧.几年前网上搜索的.刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善. 1.求下面函数的返回值( ...
- Android面试题目及其答案
转自:http://blog.csdn.net/wwj_748/article/details/8868640 Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应 ...
随机推荐
- maven编译项目时提示:cached in the local repository
今天使用命令mvn compile编译maven项目时提示错误信息,部分错误信息如下: ...... was cached in the local repository, resolution wi ...
- 转:strcat与strcpy与strcmp与strlen
转自:http://blog.chinaunix.net/uid-24194439-id-90782.html strcat 原型:extern char *strcat(char *dest,cha ...
- spring+redis实现缓存
spring + redis 实现数据的缓存 1.实现目标 通过redis缓存数据.(目的不是加快查询的速度,而是减少数据库的负担) 2.所需jar包 注意:jdies和commons-pool两个j ...
- Linux下的split 命令(将一个大文件根据行数平均分成若干个小文件)
将一个大文件分成若干个小文件方法 例如将一个BLM.txt文件分成前缀为 BLM_ 的1000个小文件,后缀为系数形式,且后缀为4位数字形式 先利用 wc -l BLM.txt 读出 BL ...
- C#实现文件下载
1,Http 协议中有专门的指令来告知浏览器, 本次响应的是一个需要下载的文件. 格式如下:Content-Disposition: attachment;filename=filename.ext以 ...
- Canu Quick Start(快速使用Canu)
Canu Quick Start Canu Quick Start PBcR (老版的canu) CA Canu specializes in(专门从事) assembling PacBio or O ...
- x+y = ((x&y)<<1) + (x^y) 证明
法一:我们考虑x,y在二进制表示时候,按位相加其中第i位xi+yi = ((xi&yi)<<1) + (xi^yi)其中(xi&yi)<<1表示当xi和yi都是 ...
- linux 重命名文件和文件夹
linux下重命名文件或文件夹的命令mv既可以重命名,又可以移动文件或文件夹. 例子:将目录A重命名为B mv A B 例子:将/a目录移动到/b下,并重命名为c mv /a /b/c 其实在文本模式 ...
- 笔记 《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法 》
阅读此书的笔记点: 此书目录即是对知识点最好的总结 第1章 熟悉Objective-C ---------------------------------------------- 第1条:了解Obj ...
- VC++编译zlib
目录 第1章简介 1 第2章版本1.2.3 2 2.1 编译汇编代码 2 2.1.1 32位汇编 2 2.1.2 64位汇编 5 2.2 Visual C++ 6.0 ...