字符串数字转换成对应的Double数值
一,介绍
前面实现了字符串转换成整形数值。参考这里:
它不支持小数,不支持符号(正、负号)
现在实现一个更复杂一点字符串转换成数值的程序。
它支持“浮点字符串”转换成对应的浮点数值,如: "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数值的更多相关文章
- JAVA将数字字符串强制转换成整型变量----求参数之和实验代码(附流程图)
一.设计思想 先将参数个数输出,并利用循环结果将参数逐个输出,再将字符串强制转化成整型,利用循环结构相加求和 二.程序流程图 三.源程序代码 package demo; public class Co ...
- java 数字转换成字符串
一.各种数字类型转换成字符串型: public static void main(String[] args) { double value = 123456.123; String str = S ...
- js字符串转换成数字与数字转换成字符串的实现方法
转载:点击查看地址 js字符串转换成数字 将字符串转换成数字,得用到parseInt函数.parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseInt(' ...
- java算法:统计数字-将数字转换成字符串,然后使用字符串String.valueOf()方法进行判断
题目: 计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值. 样例 样例 1: 输入: k = 1, n = 1 输出: 1 解释: 在 [0, 1] 中,我们发现 1 出现了 ...
- c++将数字转换成固定长度的字符串
c++将数字转换成固定长度的字符串 将数字转换为字符串,且设置为固定长度的,不足补零. string num2str(int i) { ]; sprintf(ss,"%04d",i ...
- js字符串转换成数字,数字转换成字符串
转自网络,忘记出处了. js字符串转换成数字 将字符串转换成数字,得用到parseInt函数. parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseIn ...
- C# 数字转换成汉字大写 数值转换成汉字大写
1.数字转换成汉字大写 public string NumToChinese(string x) { //数字转换为中文后的数组 //转载请注明来自 http://www.shang11.com st ...
- python中数字转换成字符串
数字转换成字符串: num=123 str='%d' %num str就变成了"123"
- 算法--java实现将数字转换成人民币大写(迅雷面试题)
今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...
随机推荐
- [转帖]TMD为你揭秘中国互联网下半场所有秘密
https://www.iyiou.com/p/35099.html 李安说,<比利.林恩的中场战事>是“一个成长的故事”.中国互联网也行至中场,下半场如何走,成长的方向在哪里,成当下关键 ...
- 洛谷 P4878 [USACO05DEC]layout布局
题面链接 sol:差分约束系统裸题,根据a+b<=c建个图跑个最短路就没了... #include <queue> #include <cstdio> #include ...
- 腾讯云 Ubuntu16.04 搭建Git 服务
一.安装Git服务器所需软件 1.安装git-core, openssh-server, openssh-client三个软件.git-core是git的核心软件: openssh-server.op ...
- VMware配置Linux虚拟机访问外网
[虚拟机版本] 系统版本 : Centos 6.8 [连接方法] 网络模式:桥接模式 ps:本人比较喜欢用桥接,直接NAT也是可以的 [配置步骤] 1.配置网卡 #配置命令 vi /etc/sysco ...
- 浅析python日志重复输出问题
浅析python日志重复输出问题 问题起源: 在学习了python的函数式编程后,又接触到了logging这样一个强大的日志模块.为了减少重复代码,应该不少同学和我一样便迫不及待的写了一个自己的日 ...
- Lights inside a 3d Grid UVA - 11605(概率)
题意: 给出一个n * m * h的空间 每次任意选择两个点 使得在以这两个点连线为对角线的空间的点的值 取反 (初始为0) 求经过k次操作后最后有多少点的值为1 解析: 遇到坐标分维去看 把三 ...
- hdu 3949 XOR (线性基)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=3949 题意: 给出n个数,从中任意取几个数字异或,求第k小的异或和 思路: 线性基求第k小异或和,因为题 ...
- 自学Linux Shell3.3-列表命令ls
点击返回 自学Linux命令行与Shell脚本之路 3.3-列表命令ls ls命令用于显示文件目录列表,和Windows系统下DOS命令dir类似.当执行ls命令时,默认显示的只有非隐藏文件的文件名. ...
- es某个分片受损或卡在INITIALIZING状态时解决办法
参考这篇文章 # OK last warning: you will probably lose data. Don't do this if you can't risk that. CLUSTER ...
- module 'scipy.misc' has no attribute 'toimage',python
anaconda环境下: 错误:python 命令行运行出错:module 'scipy.misc' has no attribute 'toimage' 解决:打开Anaconda prompt,输 ...