一,介绍

前面实现了字符串转换成整形数值。参考这里:

它不支持小数,不支持符号(正、负号)

现在实现一个更复杂一点字符串转换成数值的程序。

它支持“浮点字符串”转换成对应的浮点数值,如: "123.45" --> 123.45

支持字符串前面或者后面有空格的情况,如:"  123.45   " --> 123.45

支持带符号的情况,如:"-123.45" -->  -123.45

借助它,也可以实现字符串转换成整形数值。

二,思路

需要考虑的细节:

①字符串前面和后面是否有空格?

②是否有小数点?

总体思路与这篇文章 参考这里:  一样

但是,它在遇到小数点后,继续求值,但返回结果时会移N位(除10*N)。

输入:由代表数值的字符串,如 "123.45"

输出:该字符串表示的数值,如 123.45

不允许这种格式的输入:"12   3.45"

三,代码如下:

     private static double atof(String operand){
double val, power;
int sign,index = 0;
operand = operand.trim();
char first = operand.charAt(0); sign = (first == '-') ? -1 : 1;//判断符号
if(first == '-' || first == '+')
index = 1;//如果字符串的第一个字符为符号,则从 index=1处开始寻找数字
for(val = 0.0; index < operand.length() && isdigit(operand.charAt(index)) ; index++)
val = val * 10.0 + (operand.charAt(index) - '0');
if(index < operand.length() && operand.charAt(index) == '.')
index++;//若有小数点, 跳过小数点寻找数字
for(power = 1.0; index < operand.length() && isdigit(operand.charAt(index)); index++)
{
val = val*10.0 + (operand.charAt(index) - '0');
power *= 10.0;//相当于记录小数点后面的位数
}
return sign * val / power;
}

可借助它实现字符串转换成整数的功能。

     public static int atoi(String operand){
return (int)atof(operand);
}

最新文章

  1. activity的启动模式
  2. delphi 实现最小化系统托盘
  3. 【HTML DOM】Node.nodeValue的用法
  4. paip.java 架构师之路以及java高级技术
  5. 由addOneMember引发的思考
  6. Web服务器禁止range请求
  7. Swift - 自动布局库SnapKit的使用详解4(样例1:实现一个登录页面)
  8. Android - FrameLayout覆盖顺序
  9. jQuery父级以及同级元素查找介绍
  10. 在Table的Tbody中实现滚动条滚动
  11. h3c dhcp snooping
  12. C# 关闭窗体立即停止进程
  13. 【带着canvas去流浪(5)】绘制K线图
  14. cumprod、prod函数
  15. VUE 多页面配置(二)
  16. 【angularjs】使用ionic+angular 搭建移动端项目,字体适配
  17. 说说nginx,iis,apache,tomcat
  18. Modelsim command line 传参数到 .do 文件
  19. 从零开始学 Web 之 移动Web(六)响应式布局
  20. 在Python中进行自动化单元测试的教程

热门文章

  1. 关于splice()方法,slice() 、split()方法讲解,reverse()方法、replace()方法
  2. pcntl php多进程
  3. React 组件
  4. delphi中ini 文件操作记要(1): 使用 TIniFile
  5. AtCoder Beginner Contest 118 解题报告
  6. 博弈论基础知识: 巴什博奕+斐波那契博弈+威佐夫博奕+尼姆博弈(及Staircase)(转)
  7. Stack Overflow:研究发现访问PHP和 Android的流量更可能来自低收入国家
  8. 01 自学Aruba之功率单位和相对单位
  9. 使用FreeRTOS在SD卡驱动使用非系统延时导致上电重启不工作的情况
  10. Linux监控--CPU、内存、I/O