字符串数字转换成对应的Double数值

简介:

一,介绍

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

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

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

它支持“浮点字符串”转换成对应的浮点数值,如: "123.45" --> 123.45

支持字符串前面或者后面有空格的情况,如:"  123.45   " --> 123.45

支持带符号的情况,如:"-123.45" -->  -123.45

 

借助它,也可以实现字符串转换成整形数值。

 

二,思路

需要考虑的细节:

①字符串前面和后面是否有空格?

②是否有小数点?

总体思路与这篇文章 参考这里:  一样

但是,它在遇到小数点后,继续求值,但返回结果时会移N位(除10*N)。

 

输入:由代表数值的字符串,如 "123.45"

输出:该字符串表示的数值,如 123.45

不允许这种格式的输入:"12   3.45"

三,代码如下:

复制代码
 1     private static double atof(String operand){
 2         double val, power;
 3         int sign,index = 0;
 4         operand = operand.trim();
 5         char first = operand.charAt(0);
 6         
 7         sign = (first == '-') ? -1 : 1;//判断符号
 8         if(first == '-' || first == '+')
 9             index = 1;//如果字符串的第一个字符为符号,则从 index=1处开始寻找数字
10         for(val = 0.0; index < operand.length() && isdigit(operand.charAt(index)) ; index++)
11             val = val * 10.0 + (operand.charAt(index) - '0');
12         if(index < operand.length() && operand.charAt(index) == '.')
13             index++;//若有小数点, 跳过小数点寻找数字
14         for(power = 1.0; index < operand.length() && isdigit(operand.charAt(index)); index++)
15         {
16             val = val*10.0 + (operand.charAt(index) - '0');
17             power *= 10.0;//相当于记录小数点后面的位数
18         }
19         return sign * val / power;
20     }
复制代码

 

可借助它实现字符串转换成整数的功能。

1     public static int atoi(String operand){
2         return (int)atof(operand);
3     }

 
相关文章
|
1月前
|
C#
C# 字节数组与INT16,float,double之间相互转换,字符数组与字符串相互转换,
C# 字节数组与INT16,float,double之间相互转换,字符数组与字符串相互转换,
98 1
|
11月前
int 类型和double类型数值转换
int 类型和double类型数值转换
C# 中 double 型数值与 DateTime 的相互转换
C# 中 double 型数值与 DateTime 的相互转换
|
Java
在java中,怎样把一个double数转换为字符串时,不用科学计数法表示。
在java中,怎样把一个double数转换为字符串时,不用科学计数法表示。
482 0
|
SQL 关系型数据库 MySQL
MySQL 字符串转double转换栈帧(可能丢失精度)
简单记录栈帧以备后用 欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下: 一、转换案例 最近有朋友讨论字符串转换double丢失精度的问题案例如下: 本案例来自朋友徐晨亮 root@mysqldb 22:12: [xucl]> show create table t1\G *************************** 1.
4747 0
|
Java Android开发
Android/Java判断字符串String是否为float浮点数或double类型
Android/Java判断字符串String是否为float浮点数或double类型 Android的TextUtils的isDigitsOnly方法检测整型数据没问题,但是检测浮点和double类型可能不会返回期望的...
5105 0
|
1月前
|
存储 Java
百度搜索:蓝易云【Java语言之float、double内存存储方式】
由于使用IEEE 754标准进行存储,float和double类型可以表示非常大或非常小的浮点数,并且具有一定的精度。然而,由于浮点数的特性,它们在进行精确计算时可能会存在舍入误差。在编写Java程序时,需要注意使
67 0
|
1月前
|
存储 C语言
计算 int, float, double 和 char 字节大小
计算 int, float, double 和 char 字节大小。
28 3
|
8月前
|
存储 C语言
C 语言实例 - 计算 int, float, double 和 char 字节大小
C 语言实例 - 计算 int, float, double 和 char 字节大小。
44 1