java 实现atof函数
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函数相关推荐
- java main 方法不能执行,AndroidStudio无法执行Java的main函数
AndroidStudio无法执行Java的main函数 AndroidStudio无法执行Java的main函数 FAILURE: Build failed with an exception. * ...
- java虚成员函数_Java常见知识点汇总(④)——虚函数、抽象函数、抽象类、接口...
一. Java虚函数 虚函数的存在是为了多态. 它虚就虚在所谓"推迟联编"或者"动态联编"上,一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的. ...
- java string()函数_转载java String.split()函数的用法详解
转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...
- C#、C++、JAVA中虚函数和抽象函数的概念对比
这两天恶补了下C#的相关内容,虚函数的概念又挖掘了下,总结如下: 1.C++中函数被定义为虚函数的方法是在函数名前加virtual,虚函数可以有自己的具体内容,也可以不含有函数实现内容,称为纯虚函数. ...
- 不使用java内置函数,将String字符串转换为int类型
package com.test;public class AtoiTest {public static void main(String[] args) throws Exception {Str ...
- java中main函数解析
作者:xwdreamer 出处:http://www.cnblogs.com/xwdreamer 欢迎任何形式的转载,但请务必注明出处. 从写java至今,写的最多的可能就是主函数 public st ...
- Java中的函数传递
转载自 Java中的函数传递 在C和C++中,函数的传递可以通过函数指针来实现.在C#中,函数传递可以通过委托.Action.Func来实现.Java中没有函数指针.没有委托,那函数要如何传递呢? ...
- atoll找不到标识符c语言,C/C++编程笔记:C++中的atol,atoll和atof函数
1.atol() 此函数将作为参数传递给函数调用的C类型字符串转换为长整数.它解析C字符串str,将其内容解释为整数,并作为long int类型的值返回.该函数丢弃出现在字符串开头的空白字符,直到找到 ...
- C/C++ atof函数 - C语言零基础入门教程
目录 一.atof 函数简介 二.atof 函数函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.atof 函数简介 在 st ...
最新文章
- 网络协议关系拓扑图 很全面 很好
- API网关Kong系列(一)初识
- 给IDEA给类和方法添加注解
- linux中负载值为多少正常_Linux load average负载量分析与解决思路
- react-draft-wysiwyg富文本的使用
- 【华为云技术分享】当我们在谈论卡片时,我们到底在谈论什么?
- 前端 如何将页脚固定在页面底部
- 人脸检测之Haar分类器方法
- 牛客练习赛29: F. 算式子
- Vue2学习笔记:计算属性(computed)
- 如何覆盖上一次commit_如何在 Linux 上一次性批量重命名一组文件?
- HCNA学习的第二天
- python如何批量下载大文件(支持断点续传)
- 2021.05.26【R语言】丨clusterProfiler注释大肠杆菌GO/KEGG富集图
- Jmeter_基本操作-取样器
- 老男孩mysql 百度云_老男孩MySQL DBA 6期
- layim之初始化配置
- 羊毛地毯可以用水洗吗
- 最新zotero与obsidian笔记联动教程(可代替citations和mdnotes)
- 金蝶中间件会展邀请函(活动日期:2001年12月12日)
热门文章
- 2016全球与中国市场示波器深度研究报告
- Appium 服务器初始化参数(Capability)
- 目前我国家庭计算机用户接入因特网的下述,目前我国家庭计算机用户接入因特网的下述几种方法中,速度最快的是_ _ 。...
- 招投标体统JAVA源代码,JSP 招投标管理系统(毕业设计)源码
- URL格式java_URLConnection格式与用法
- mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)
- 讨教大学|2022年中国质量协会六西格玛考试成绩查询
- 模型评估:K-S值和AUC的区别
- 使用 ChatGPT API 和节点创建 CLI 聊天机器人.js
- 原码、反码、补码及补码转原码