字符串数字转换成对应的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 * ...
随机推荐
- PHP hexdec() 函数
hexdec() 函数把十六进制转换为十进制. 语法 hexdec(hex_string) 参数 描述 hex_string 必需.规定要转换的十六进制数. 说明 返回与 hex_string 参数所 ...
- Angular 序列化和反序列化和遍历
<!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...
- visual studio 和 sql server 的激活密钥序列号
VS2010: YCFHQ-9DWCY-DKV88-T2TMH-G7BHP VS2013: BWG7X-J98B3-W34RT-33B3R-JVYW9 VS2015: 专业版:HMGNV-WCYXV- ...
- Lodop调整打印项输出顺序 覆盖与层级
Lodop中的打印项,如果有输出在同一位置,或部分位置重叠的地方,打印项之间是怎么覆盖的呢?在JS里,按照Lodop语句打印项先后的执行顺序,先执行的先输出,后执行的后输出,如果有后面的打印项和前面的 ...
- AC自动机-HDU3065-简单题
http://acm.hdu.edu.cn/showproblem.php?pid=3065 需要记录匹配情况的AC自动机,没有清空一些数组导致wa了几发. /*------------------- ...
- poj1154 【DFS】
LETTERS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8976 Accepted: 4017 Descripti ...
- instanceof判断的对象可以是接口
instanceof是Java的一个二元操作符(运算符) 用法 boolean result = object instanceof class instanceof通过返回一个布尔值来指出,这个对象 ...
- 【Linux】fg、bg让你的进程在前后台之间切换
Linux下的fg和bg命令是进程的前后台调度命令,即将指定号码(非进程号)的命令进程放到前台或后台运行.比如一个需要长时间运行的命令,我们就希望把它放入后台,这样就不会阻塞当前的操作:而一些服务型的 ...
- CodeChef题目选讲
https://wenku.baidu.com/view/2445a0322f60ddccda38a023.html 关键点:不超过7条 根据咕咕原理,所以答案最少是N/7;(N小于49就暴力) 随机 ...
- luogu P2181 对角线
题目大意: 给一个n边形,求出在所有任意三条对角线都不相交于同一个点的情况下,交点个数是多少.(即交点个数最多是多少) 分析: 题目很水,但是公式不好想. 由于任意三条对角线不会交于一点,所以所有的交 ...