字符串数字转换成对应的Double数值
2024-08-29 23:52:35
一,介绍
前面实现了字符串转换成整形数值。参考这里:
它不支持小数,不支持符号(正、负号)
现在实现一个更复杂一点字符串转换成数值的程序。
它支持“浮点字符串”转换成对应的浮点数值,如: "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);
}
最新文章
- activity的启动模式
- delphi 实现最小化系统托盘
- 【HTML DOM】Node.nodeValue的用法
- paip.java 架构师之路以及java高级技术
- 由addOneMember引发的思考
- Web服务器禁止range请求
- Swift - 自动布局库SnapKit的使用详解4(样例1:实现一个登录页面)
- Android - FrameLayout覆盖顺序
- jQuery父级以及同级元素查找介绍
- 在Table的Tbody中实现滚动条滚动
- h3c dhcp snooping
- C# 关闭窗体立即停止进程
- 【带着canvas去流浪(5)】绘制K线图
- cumprod、prod函数
- VUE 多页面配置(二)
- 【angularjs】使用ionic+angular 搭建移动端项目,字体适配
- 说说nginx,iis,apache,tomcat
- Modelsim command line 传参数到 .do 文件
- 从零开始学 Web 之 移动Web(六)响应式布局
- 在Python中进行自动化单元测试的教程
热门文章
- 关于splice()方法,slice() 、split()方法讲解,reverse()方法、replace()方法
- pcntl php多进程
- React 组件
- delphi中ini 文件操作记要(1): 使用 TIniFile
- AtCoder Beginner Contest 118 解题报告
- 博弈论基础知识: 巴什博奕+斐波那契博弈+威佐夫博奕+尼姆博弈(及Staircase)(转)
- Stack Overflow:研究发现访问PHP和 Android的流量更可能来自低收入国家
- 01 自学Aruba之功率单位和相对单位
- 使用FreeRTOS在SD卡驱动使用非系统延时导致上电重启不工作的情况
- Linux监控--CPU、内存、I/O