今天在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)处理函数 | 学步园相关推荐

  1. python agg函数_个人对Pandas中agg、apply和transform函数的理解

    个人对Pandas中agg.apply和transform函数的理解 学习<利用Python进行数据分析>一书,关于pandas的这三个函数,个人理解如下. agg agg方法可以被gro ...

  2. Java解决递归栈溢出_方法递归调用中java栈溢出的问题 及 解答 | 学步园

    为什么运行如下程序 , 方法sum2 不会导致栈溢出, 方法sum 会导致栈溢出? --------output----------- 32004000 java.lang.StackOverflow ...

  3. power bi函数_在Power BI中的行上使用聚合函数

    power bi函数 Aggregate functions are one of the main building blocks in Power BI. Being used explicitl ...

  4. python68个内置函数_直接在python中检索68个内置函数?

    Python3.5中的一种方法是列出具有__module__属性并将其设置为builtins和小写名称的对象:>>> sorted(k for k, v in vars(__buil ...

  5. java 动态调用函数_深入讲解Java语言中的函数动态调用方式

    相 信 有 不 少 人 使 用C 语 言 的 函 数 指 针 实 现 过 函 数 的 动 态 调 用. 适 当 地 运 用 函 数 动 态 调 用 功 能 不 仅 能 减 少 代 码 数 量, 而 且 ...

  6. java static 函数_详解java中的static关键字

    Java中的static关键字可以用于修饰变量.方法.代码块和类,还可以与import关键字联合使用,使用的方式不同赋予了static关键字不同的作用,且在开发中使用广泛,这里做一下深入了解. 静态资 ...

  7. java comparator相等_详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...

  8. java 字符串缓冲区_详解Java中字符串缓冲区StringBuffer类的使用

    StringBuffer 是一个线程安全的可变的字符序列.它继承于AbstractStringBuilder,实现了CharSequence接口. StringBuilder 也是继承于Abstrac ...

  9. java插入图片_如何在java窗体程序中添加图片

    打开eclipse,创建一个java工程项目,创建完后在src下新建一个类Window,由于要插入图片,所以还在工程目录下创建一个文件夹imgs,里面放了一张60*60的图片,创建后的工程目录和图片, ...

最新文章

  1. 不可不知的软件架构模式
  2. 怎样在bug管理上节省时间
  3. (三十一)java多线程二
  4. delphi 怎么监测image有没有变动_社会舆情监测引导应对解决方案
  5. Hyper-V 2016:支持guest操作系统
  6. jade模板引擎修改为ejs模板引擎
  7. 中缀转后缀表达式,带括号的后缀表达式综合计算器,Java栈数据结构实现
  8. encodeURIComponent与encodeURI的区别
  9. XAMPP修改80和443端口及创建虚拟目录
  10. 19【推荐系统5】NeuralCF
  11. [转载] 2012年上半年信管网论文复习建议
  12. 重学Java 8新特性 | 第1讲——我们为什么要学习Java 8新特性?
  13. 正确的逛Github-寻找优秀的中文项目
  14. 股份制的起源—严谨版与趣味版
  15. SINR, RSRP, CQI 关系
  16. SpringBoot框架的环境搭建与使用
  17. arcpy实现注记合并
  18. 计算机网络可靠性的重要指标,浅谈如何提高计算机网络的可靠性
  19. 详解旨在提升EVM底层性能的兼容公链Monad
  20. C语言使用信号量解决生产者消费者模型的同步问题

热门文章

  1. SAP CRM Product hierarchy,Category和Application的三个问题
  2. ConEmu状态栏的设置介绍
  3. 在SAP C4C TI(Thing Inspector)页面里添加自定义UI
  4. SAP Fiori Elements - fixed value help data request and how drop down list entry is rendered
  5. every function in scala is an instance of a class
  6. Scala range reverse debug
  7. Fiori extension hook和Hybris的template
  8. how is my Angular custom controller code executed
  9. Extension project - Component.js of standard application could not be loaded
  10. equipment download scenario3