一,介绍

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

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

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

它支持“浮点字符串”转换成对应的浮点数值,如: "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. pcntl php多进程

    <?php $i=0;while($i!=5){ $pid = pcntl_fork(); if ($pid == 0) { echo $pid."---------hahah&quo ...

  2. PHP微信支付案例收录

    微信支付API 文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1&index=1# TP 微信 + 支 ...

  3. 注册许可证出现“输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非空白字符”

    问题描述: 引入失败!输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符.两个以上的填充字符,或者填充字符间包含非空白字符 解决方案: 去注册cloud7.0的产品,重新引入 ...

  4. python对redis的常用操作 上 (对列表、字符串、散列结构操作)

    这里的一切讨论均基于python的redis-py库. 安装使用: pip install redis 然后去获取一个redis客户端: redis_conn = redis.Redis(host=R ...

  5. MySQL Binlog详解

    MySQL Binlog详解 Mysql的binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(对数据库的改动),对数据库的查询select或show等不会被bi ...

  6. The Unique MST POJ - 1679 (次小生成树)

    Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spann ...

  7. 自学Python5.4-类 _init_方法

    自学Python之路 自学Python5.4-类  _init_方法 1. 定义一个类 定义一个类的格式如下:

  8. [luogu3258][JLOI2014]松鼠的新家

    题解 我们就在\([a_i,a_{i+1}]\)的路径上都\(+1\),然后单点查询就可以了. ac代码(吸了氧才过的QwQ) # include <bits/stdc++.h> # de ...

  9. 洛谷 P1110 [ZJOI2007]报表统计 解题报告

    P1110 [ZJOI2007]报表统计 题目描述 \(Q\)的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小\(Q\)希望可以帮妈妈分担一些工作,作为她的生日礼物之一. 经过仔细 ...

  10. 超越LLMNR /NBNS欺骗 - 利用Active Directory集成的DNS

    利用名称解析协议中的缺陷进行内网渗透是执行中间人(MITM)攻击的常用技术.有两个特别容易受到攻击的名称解析协议分别是链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBNS).攻击者可以 ...