zoukankan      html  css  js  c++  java
  • 字符串数字转换成对应的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     }
  • 相关阅读:
    矩阵快速幂---BestCoder Round#8 1002
    行列式及其基本性质
    排列,逆序
    扩展欧几里得
    AC automation 模板
    hdu2897 巴什博奕
    hdu2188 巴什博奕
    hdu1846 巴什博奕
    hdu2149 巴什博奕
    【转】博弈基础
  • 原文地址:https://www.cnblogs.com/hapjin/p/5395828.html
Copyright © 2011-2022 走看看