目标

将字符串转为 double 类型。转自 c程序设计语言第2版。

方法 1:

整数部分、小数部分单独计算,然后相加。

  • 整数部分转换参考这篇文章
  • 小数部分使用如下公式。

0.1234 = 1 * 10-1 + 2 * 10-2 + 3 * 10-3 + 4 * 10-4

得到每位数,从前往后,每项依次除以 10、100、1000…

所以 power 默认从 10 开始,每次循环乘以 10。

double atof(char s[]) {int sign = 1;int i = 0;switch (s[0]) {case '-':sign = -1;i = 1;break;    case '+':i = 1;break;}int n = 0;while (s[i] >= '0' && s[i] <= '9') {n = 10 * n + s[i] - '0';i++;}if (s[i] == '.') {i++;}double f = 0.0;double power = 10.0;while (s[i] >= '0' && s[i] <= '9') {f = f + (s[i]-'0') / power;i++;power *= 10;}return sign * (n+f);
}

方法 2:

整体当作整数,算完后小数点左移。

如 123.456,先得到 123456 再除以 1000。

但注意如果 n 使用 int 类型存储,则很容易溢出。

如 3333.333333,先得到 3333333333,超出 2147483647 溢出,实际值为负数,那么之后的一系列运算全错。

double atof(char s[]) {int sign = 1;int i = 0;switch (s[0]) {case '-':sign = -1;i = 1;break;    case '+':i = 1;break;}double n = 0.0;while (s[i] >= '0' && s[i] <= '9') {n = 10 * n + (s[i] - '0');i++;}if (s[i] == '.') {i++;}double power = 1.0;while (s[i] >= '0' && s[i] <= '9') {n = 10 * n + (s[i] - '0');i++;power *= 10;}return sign * n/power;
}

这几天反思了之前 4 天在工厂的作为。工厂空位太少,所以刚新生产出来的半成品,只能是哪里有空就塞哪里。包装工需要的货物被压在最里面,类似推箱子游戏,拉出需要的箱子后再回填。

并非是动辄搬运几百斤的大东西,而是二十几斤的塑料制品,都不用扛在肩上,不是很累,还 OK,就是每天走 3 万步对我这个宅,腿有些酸。并且大多是无效工作,再加上要记住 50 亩内堆积如山的货物型号与数量,绝大多数货物上没有贴上标签编号、数量,只有熟练的包装工、生产线上的员工比较熟悉,所以继续待下去,以后一定会变为地狱模式,不适合自己,也学不到什么东西,于是第 2 天就打起了退堂鼓。

阿姨忙完后,说感觉怎么样,问我是不是来体验生活的。我明白什么意思了,我想了想要为年轻人争口气,于是继续做,有些赌气的意味。

到了第 4 天,我身上都热烂了,也顾不上什么沉没成本,再赌下去,我更吃亏,工钱没拿,还是辞了。至于工厂五十多岁的阿姨、大叔,若是看见我没来,可能闲谈时说早就知道现在年轻人吃不得这个苦,对我们 95 后的印象更差,那我管不了了。

我不禁想起了以前在武汉工作的时候,师傅跟我说,别看这些阿姨做的是保洁、保安和我一样的工作,就觉得她们和我一样没有钱,她们甚至可能拥有好几套房,孩子也是高学历,在北上广深拿着上万月薪,阿姨们只是闲不住,顺便在这工作拿点零花钱,养老,还有个伴。

至少比别人落后了 30 年,再看着网上流行的段子:比你优秀的人还比你努力,其实领先我十万年踏入神之阶层也无所谓,有音乐、小说陪伴着我足够。除了技能与工作外,提升自己的情商、交谈能力、上下打点、“人情世故”、“融入集体”、隐式溜须拍马、语句斟酌、反应速度、八面玲珑、不得罪人,一条都没沾上,以后慢慢学吧。

字符串转为 double 类型相关推荐

  1. php字符串转int,php怎样将字符串转为int类型

    php将字符串转为int类型的方法:可以利用内置函数intval()来实现.intval()函数用于获取变量的整数值,如果执行成功则返回integer值,如果执行失败则返回0,例如:[intval(& ...

  2. C语言,字符串转为整数类型

    在C中准确来说是字符数组转整数类型 首先判断字符串是否具有整数的形式, 如果是就直接进行转换,不是则自己另外赋一个值. #include <stdio.h> #include <st ...

  3. php怎么将字符串转为数字类型,利用PHP怎么将字符串转换成数字

    利用PHP怎么将字符串转换成数字 发布时间:2020-12-09 18:06:42 来源:亿速云 阅读:84 作者:Leah 本篇文章为大家展示了利用PHP怎么将字符串转换成数字,内容简明扼要并且容易 ...

  4. 字符串转为Date类型

    1.首先了解创建Date类型的方法,找合适的参数进行创建.主要有下面几种 new Date("month dd,yyyy hh:mm:ss")<span style=&quo ...

  5. mysql int转String 及 将String转为Double类型

    注:cast()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值 一.int转string 1.cast() 函数 select  cast (111  as  char ); 2 ...

  6. C#语言之“string格式的日期时间字符串转为DateTime类型”的方法

    方法一:Convert.ToDateTime(string) string格式有要求,必须是yyyy-MM-dd hh:mm:ss ================================== ...

  7. 【数据采集】将16进制字符串转化为Double类型输出(依照IEEE754标准)

    因为需要读取二进制文件中包含的数据,故需要这样一个转化过程. 鄙人功力太浅,主要参照http://www.cnblogs.com/xinjun/archive/2010/07/28/1787297.h ...

  8. 16进制转double dotnet_IEEE 16进制字符串转化为double类型

    因项目需要,需要将内存中的64位16进制字符串表示成double.如下: #include #include #include #include #include using namespace st ...

  9. JSON字符串转为指定实体类对象

    创建JsonStringToClass对象即可 package utils;import net.sf.json.JSONArray; import net.sf.json.JSONObject;im ...

最新文章

  1. ECCV2020 Spotlight | CPN:Anchor Free,Two-stage目标检测
  2. python中年大叔学编程_中年大叔学编程-Python简单操作文件
  3. 第十一章:Java_多线程
  4. 架构之美—软件架构6大步骤(开篇)
  5. 爬虫入门二(urllib,urllib2)
  6. Bootstrap 组件之 Nav
  7. linux下配置squid 服务器,最简单使用方式
  8. C++ Primer(第5版)
  9. 抓包神器之Charles
  10. mysql 联合索引底层结构_MySQL联合索引底层数据结构
  11. window7 黑屏
  12. wordpress外贸建站四大步骤,适合新手
  13. 求两个数的最小公倍数(C语言)
  14. 7.2 异常处理(Exception Handing)
  15. 【学习笔记】炼数成金 Dataguru python2.x 2012
  16. MacOS Big Sur 如何安装创新SBX-Fi Surround 5.1Pro(USB外置)声卡?
  17. Unity官方中文版(有生之年终于等到了)
  18. vue 使用echarts实现3D饼图和环形图
  19. 亚马逊海外购 “真黑五”全球狂欢 推出“巅峰6天”钜惠风暴
  20. URL详细分析及在python中处理URL

热门文章

  1. 学习Android开发
  2. 宁夏慢阻肺数字化管理中心与葛兰素史克启动战略合作
  3. 鼠标键为什么按小键盘5以及+的时候却有时变成了右键点击,如何改为左键点击
  4. 虚拟机内连接MotionPro一直处于正在连接状态
  5. 区块链共识机制:分布式系统的Paxos协议
  6. 离线下载Android SDK(100%成功)
  7. ChatGPT会替代初级程序员吗?
  8. Tomcat到底是个啥?
  9. 如何应对云安全技术遇到的挑战?可从这三点入手
  10. SpringCloud-Hystrix熔断器