atof函数

将字符串转换为浮点数,此函数规则如下:
它会扫描参数 s 字符串,跳过前面的空白字符(例如空格,tab缩进等),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(‘\0’)才结束转换,并将结果返回。参数 s 字符串可包含正负号、小数点或E(e)来表示指数部分,如123. 456 或123e-2。
【返回值】返回转换后的浮点数;如果字符串 s 不能被转换为 float,那么返回 0.0。

public class algorithm {public float atof(String s){float left = 0.0f;float right = 0.0f;boolean positive = true;boolean ePo = true;int start = 0;int size = s.length();//跳过空格等while(start < size && (s.charAt(start) == ' ' || s.charAt(start) == '\t')){start++;}//判断是否有正负符号if(start < size && s.charAt(start) == '-'){positive = false;start++;}else if(start < size && s.charAt(start) == '+'){start++;}//计算小数点左侧while(start < size && s.charAt(start) >= '0' && s.charAt(start) <= '9'){left = left*10 + s.charAt(start) - '0';start++;}//计算小数点右侧float order = 1.0f;if(start < size && s.charAt(start) == '.'){start++;while(start < size && s.charAt(start) >= '0' && s.charAt(start) <= '9'){order = order/10;right = right + (s.charAt(start) - '0')*order;start++;}}//判断是否有科学计数 eint or = 0;if(start < size && s.charAt(start) == 'e'){start++;//判断科学计数前的正负if(start < size && s.charAt(start) == '-'){ePo = false;start++;}else if(start < size && s.charAt(start) == '+'){start++;}while(start < size && s.charAt(start) >= '0' && s.charAt(start) <= '9'){or = or*10 + s.charAt(start) - '0';start++;}}//计算科学计数移动的小数点位数order = 1.0f;while(or > 0 && ePo){order = order*10;or--;}while(or > 0 && !ePo){order = order/10;or--;}//得到结果float result = (left + right) * order;if(!positive){return -result;}return result;}}

测试单元:
String[] examples = {"234.34", "-3.34", "++23/43ji", "j3i43.2", "23.3e-3", ".23f", "", " 234.32ji"};
输出结果:

234.34
-3.34
0.0
0.0
0.023299998
0.23
0.0
234.32

可以看到,由于是单精度浮点数,23.3e-3的返回值为0.023299998,当大于7位会四舍五入.

java 实现atof函数相关推荐

  1. java main 方法不能执行,AndroidStudio无法执行Java的main函数

    AndroidStudio无法执行Java的main函数 AndroidStudio无法执行Java的main函数 FAILURE: Build failed with an exception. * ...

  2. java虚成员函数_Java常见知识点汇总(④)——虚函数、抽象函数、抽象类、接口...

    一. Java虚函数 虚函数的存在是为了多态. 它虚就虚在所谓"推迟联编"或者"动态联编"上,一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的. ...

  3. java string()函数_转载java String.split()函数的用法详解

    转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...

  4. C#、C++、JAVA中虚函数和抽象函数的概念对比

    这两天恶补了下C#的相关内容,虚函数的概念又挖掘了下,总结如下: 1.C++中函数被定义为虚函数的方法是在函数名前加virtual,虚函数可以有自己的具体内容,也可以不含有函数实现内容,称为纯虚函数. ...

  5. 不使用java内置函数,将String字符串转换为int类型

    package com.test;public class AtoiTest {public static void main(String[] args) throws Exception {Str ...

  6. java中main函数解析

    作者:xwdreamer 出处:http://www.cnblogs.com/xwdreamer 欢迎任何形式的转载,但请务必注明出处. 从写java至今,写的最多的可能就是主函数 public st ...

  7. Java中的函数传递

    转载自  Java中的函数传递 在C和C++中,函数的传递可以通过函数指针来实现.在C#中,函数传递可以通过委托.Action.Func来实现.Java中没有函数指针.没有委托,那函数要如何传递呢? ...

  8. atoll找不到标识符c语言,C/C++编程笔记:C++中的atol,atoll和atof函数

    1.atol() 此函数将作为参数传递给函数调用的C类型字符串转换为长整数.它解析C字符串str,将其内容解释为整数,并作为long int类型的值返回.该函数丢弃出现在字符串开头的空白字符,直到找到 ...

  9. C/C++ atof函数 - C语言零基础入门教程

    目录 一.atof 函数简介 二.atof 函数函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.atof 函数简介 在 st ...

最新文章

  1. 网络协议关系拓扑图 很全面 很好
  2. API网关Kong系列(一)初识
  3. 给IDEA给类和方法添加注解
  4. linux中负载值为多少正常_Linux load average负载量分析与解决思路
  5. react-draft-wysiwyg富文本的使用
  6. 【华为云技术分享】当我们在谈论卡片时,我们到底在谈论什么?
  7. 前端 如何将页脚固定在页面底部
  8. 人脸检测之Haar分类器方法
  9. 牛客练习赛29: F. 算式子
  10. Vue2学习笔记:计算属性(computed)
  11. 如何覆盖上一次commit_如何在 Linux 上一次性批量重命名一组文件?
  12. HCNA学习的第二天
  13. python如何批量下载大文件(支持断点续传)
  14. 2021.05.26【R语言】丨clusterProfiler注释大肠杆菌GO/KEGG富集图
  15. Jmeter_基本操作-取样器
  16. 老男孩mysql 百度云_老男孩MySQL DBA 6期
  17. layim之初始化配置
  18. 羊毛地毯可以用水洗吗
  19. 最新zotero与obsidian笔记联动教程(可代替citations和mdnotes)
  20. 金蝶中间件会展邀请函(活动日期:2001年12月12日)

热门文章

  1. 2016全球与中国市场示波器深度研究报告
  2. Appium 服务器初始化参数(Capability)
  3. 目前我国家庭计算机用户接入因特网的下述,目前我国家庭计算机用户接入因特网的下述几种方法中,速度最快的是_ _ 。...
  4. 招投标体统JAVA源代码,JSP 招投标管理系统(毕业设计)源码
  5. URL格式java_URLConnection格式与用法
  6. mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)
  7. 讨教大学|2022年中国质量协会六西格玛考试成绩查询
  8. 模型评估:K-S值和AUC的区别
  9. 使用 ChatGPT API 和节点创建 CLI 聊天机器人.js
  10. 原码、反码、补码及补码转原码