java convert函数_自己实现 java中 Convert.toDouble(String str)处理函数 | 学步园
今天在superWaba上看到Convert.toDouble(String str),由于底层问题比较大的数就出错,现在自己写了一个 程序中info()是我加的打印,可以去掉
java中 Convert.toDouble(String str)处理函数
/**由于底层对该函数支持不好,自己写了一个 added by shixianjun
* 对于比较大的数 也没有问题 可以对科学计数法形式的数进行处理
* @param str
* @return 无效串返回0.0
*/
private double stringTOdouble(String str) {
info("into stringTOdouble==str=="+str);
//re小数点之前的数,re1小数点之后的数,re2 E之后的数
double re=0.0,re1=0.0;
int re2=0;
double index=1.0;
boolean flag=true;//正负标志 true 正 false负
boolean eflag=true;//e之后的指数正负 true正 false 负
if(str==null) {
info("out stringTOdouble==re=str==null="+0);
return 0.0;
}
byte point=0;//在小数点之前0,之后1
byte ebefore=0;//在E之前0,之后1
int leng=str.length();
if(leng<=0) {
info("out stringTOdouble==re=leng<0="+0);
return 0.0;
}
char temp[];//串临时保存在temp数组
//判断是整数还是负数,对flag进行赋值,并去掉(+ -)符号
if(str.startsWith("+")) {
temp=str.substring(1).toCharArray();
leng--;
}else if(str.startsWith("-")) {
flag=false;
temp=str.substring(1).toCharArray();
leng--;
}else{
temp=str.toCharArray();
};
/**检查每位数把小数点之前的保存在re中,小数点之后的
* 的保存在re1中,e之后的保存在re2中
*/
for(int i=0;i
if(temp[i]>='0' && temp[i]<='9') {
if(ebefore==0) {
if(point==0) {
re=re*10.0+(temp[i]-48);
}else if(point==1) {
index=index*0.1;
re1=re1+(temp[i]-48)*index;
}
}else if(ebefore==1) {
re2=re2*10+(temp[i]-48);
}
}else if(temp[i]=='.') {
point++;
if(point>1) {//两个点为无效
info("out stringTOdouble==re=twopoint="+0);
return 0.0;
}
}else if(temp[i]=='e' ||temp[i]=='E') {
ebefore++;
if(ebefore>1) {//两个E为无效
info("out stringTOdouble==re=two e="+0);
return 0.0;
}
}else if(temp[i]=='+' || temp[i]=='-'){
if(ebefore==1 && temp[i]=='-') {
eflag=false;
}else {//E之前出现了 + -号
info("out stringTOdouble==re=plusbefor e="+0);
return 0.0;
}
}else {
info("out stringTOdouble==re=other char=temp[i]"+temp[i]);
return 0.0;
}
}//end for
if(eflag==false) {
re2=re2*(-1);
}
// info("out stringTOdouble==re=eee14="+Math.pow(10,-14));
if(flag==false) {
info("out stringTOdouble==re=="+(re+re1)+" "+Math.pow(10,re2*1.0)*(-1.0));
return (re+re1)*Math.pow(10,re2*1.0)*(-1.0);
}else {
info("out stringTOdouble==re=="+(re+re1)+" "+Math.pow(10,re2*1.0));
return (re+re1)*Math.pow(10,re2*1.0);
}
}
java convert函数_自己实现 java中 Convert.toDouble(String str)处理函数 | 学步园相关推荐
- python agg函数_个人对Pandas中agg、apply和transform函数的理解
个人对Pandas中agg.apply和transform函数的理解 学习<利用Python进行数据分析>一书,关于pandas的这三个函数,个人理解如下. agg agg方法可以被gro ...
- Java解决递归栈溢出_方法递归调用中java栈溢出的问题 及 解答 | 学步园
为什么运行如下程序 , 方法sum2 不会导致栈溢出, 方法sum 会导致栈溢出? --------output----------- 32004000 java.lang.StackOverflow ...
- power bi函数_在Power BI中的行上使用聚合函数
power bi函数 Aggregate functions are one of the main building blocks in Power BI. Being used explicitl ...
- python68个内置函数_直接在python中检索68个内置函数?
Python3.5中的一种方法是列出具有__module__属性并将其设置为builtins和小写名称的对象:>>> sorted(k for k, v in vars(__buil ...
- java 动态调用函数_深入讲解Java语言中的函数动态调用方式
相 信 有 不 少 人 使 用C 语 言 的 函 数 指 针 实 现 过 函 数 的 动 态 调 用. 适 当 地 运 用 函 数 动 态 调 用 功 能 不 仅 能 减 少 代 码 数 量, 而 且 ...
- java static 函数_详解java中的static关键字
Java中的static关键字可以用于修饰变量.方法.代码块和类,还可以与import关键字联合使用,使用的方式不同赋予了static关键字不同的作用,且在开发中使用广泛,这里做一下深入了解. 静态资 ...
- java comparator相等_详解Java中Comparable和Comparator接口的区别
详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...
- java 字符串缓冲区_详解Java中字符串缓冲区StringBuffer类的使用
StringBuffer 是一个线程安全的可变的字符序列.它继承于AbstractStringBuilder,实现了CharSequence接口. StringBuilder 也是继承于Abstrac ...
- java插入图片_如何在java窗体程序中添加图片
打开eclipse,创建一个java工程项目,创建完后在src下新建一个类Window,由于要插入图片,所以还在工程目录下创建一个文件夹imgs,里面放了一张60*60的图片,创建后的工程目录和图片, ...
最新文章
- 不可不知的软件架构模式
- 怎样在bug管理上节省时间
- (三十一)java多线程二
- delphi 怎么监测image有没有变动_社会舆情监测引导应对解决方案
- Hyper-V 2016:支持guest操作系统
- jade模板引擎修改为ejs模板引擎
- 中缀转后缀表达式,带括号的后缀表达式综合计算器,Java栈数据结构实现
- encodeURIComponent与encodeURI的区别
- XAMPP修改80和443端口及创建虚拟目录
- 19【推荐系统5】NeuralCF
- [转载] 2012年上半年信管网论文复习建议
- 重学Java 8新特性 | 第1讲——我们为什么要学习Java 8新特性?
- 正确的逛Github-寻找优秀的中文项目
- 股份制的起源—严谨版与趣味版
- SINR, RSRP, CQI 关系
- SpringBoot框架的环境搭建与使用
- arcpy实现注记合并
- 计算机网络可靠性的重要指标,浅谈如何提高计算机网络的可靠性
- 详解旨在提升EVM底层性能的兼容公链Monad
- C语言使用信号量解决生产者消费者模型的同步问题
热门文章
- SAP CRM Product hierarchy,Category和Application的三个问题
- ConEmu状态栏的设置介绍
- 在SAP C4C TI(Thing Inspector)页面里添加自定义UI
- SAP Fiori Elements - fixed value help data request and how drop down list entry is rendered
- every function in scala is an instance of a class
- Scala range reverse debug
- Fiori extension hook和Hybris的template
- how is my Angular custom controller code executed
- Extension project - Component.js of standard application could not be loaded
- equipment download scenario3