一,介绍

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

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

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

它支持“浮点字符串”转换成对应的浮点数值,如: "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);
}

字符串数字转换成对应的Double数值的更多相关文章

  1. JAVA将数字字符串强制转换成整型变量----求参数之和实验代码(附流程图)

    一.设计思想 先将参数个数输出,并利用循环结果将参数逐个输出,再将字符串强制转化成整型,利用循环结构相加求和 二.程序流程图 三.源程序代码 package demo; public class Co ...

  2. java 数字转换成字符串

    一.各种数字类型转换成字符串型:  public static void main(String[] args) { double value = 123456.123; String str = S ...

  3. js字符串转换成数字与数字转换成字符串的实现方法

    转载:点击查看地址 js字符串转换成数字 将字符串转换成数字,得用到parseInt函数.parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseInt(' ...

  4. java算法:统计数字-将数字转换成字符串,然后使用字符串String.valueOf()方法进行判断

    题目: 计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值. 样例 样例 1: 输入: k = 1, n = 1 输出: 1 解释: 在 [0, 1] 中,我们发现 1 出现了 ...

  5. c++将数字转换成固定长度的字符串

    c++将数字转换成固定长度的字符串 将数字转换为字符串,且设置为固定长度的,不足补零. string num2str(int i) { ]; sprintf(ss,"%04d",i ...

  6. js字符串转换成数字,数字转换成字符串

    转自网络,忘记出处了. js字符串转换成数字 将字符串转换成数字,得用到parseInt函数. parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseIn ...

  7. C# 数字转换成汉字大写 数值转换成汉字大写

    1.数字转换成汉字大写 public string NumToChinese(string x) { //数字转换为中文后的数组 //转载请注明来自 http://www.shang11.com st ...

  8. python中数字转换成字符串

    数字转换成字符串: num=123 str='%d' %num str就变成了"123"

  9. 算法--java实现将数字转换成人民币大写(迅雷面试题)

    今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...

随机推荐

  1. elk安装最佳实践

    一.添加清华源 .x.repo<<EOF [elasticsearch-.x] name=Elasticsearch repository .x packages baseurl=http ...

  2. 主成分分析PCA(Principal Component Analysis)在sklearn中的应用及部分源码分析

    最近太忙,又有一段时间没写东西了. pca是机器学习中一个重要的降维技术,是特征提取的代表.关于pca的实现原理,在此不做过多赘述,相关参考书和各大神牛的博客都已经有各种各样的详细介绍. 如需学习相关 ...

  3. BZOJ3589 动态树(树链剖分+容斥原理)

    显然容斥后转化为求树链的交.这个题非常良心的保证了查询的路径都是到祖先的,求交就很休闲了. #include<iostream> #include<cstdio> #inclu ...

  4. AISing Programming Contest 2019 翻车记

    A:签到. #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> ...

  5. (转)二分图匹配匈牙利算法与KM算法

    匈牙利算法转自于: https://blog.csdn.net/dark_scope/article/details/8880547 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名 ...

  6. day5 列表

    列表 查 索引(下标),默认从0开始 切片 .count 查某个元素的出现次数 .index 根据内容找元素的对应索引位置 增加 .append() 追加在最后 .insert(index,'内容') ...

  7. MT【228】整数解的个数

    求方程$x+y+z=24$的整数解的个数,要求$1\le x\le 5,12\le y\le 18,-1\le z\le12$ 解:设$a_r$是方程$X+Y+Z=r$的满足上述要求的整数解的个数,那 ...

  8. 自学Zabbix3.10.2.1 linux如何配置使用sendEmail发送邮件

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix3.10.2.1 linux如何配置使用sendEmail发送邮件 sendEma ...

  9. NOI2018退役记

    NOI2018退役记 终于我也退役了-- Day0 高中毕业前最后一次坐飞机了--在机场干什么呢?当然是打元气打元气打元气.下飞机干什么呢?当然是打元气打元气打元气. 有接机服务,大巴上有个导游,又向 ...

  10. 用DBContext (EF) 实现通用增删改查的REST方法

    我们用ADO.NET Entity Data Model来生成实体类后,一般都会对这些类进行基本的增删改查操作,如果每个类都要写这些基本的方法,实在太乏味了.下面就是通过step by step的方式 ...