C++字符串和小数类型的转换

 字符串 -> 小数

代码

展示

提示:

solo为转换的字符串

number为返回的小数

#include 
using namespace std;
double convert (string solo) { //double方法的返回值有小数部分两位数的限制
    double integer = 0; //整数部分(为了相加)
    string strInt = ""; //整数字符串
    double decimal = 0; //小数部分
    string strDecimal = ""; //小数字符串
    bool IntdecimalPoint = false; //是否已过整数小数点
    bool DoudecimalPoint = false; //是否已到小数小数点
    for (int i = 0;i < solo.length();i++) { //求整数字符串和小数字符串
        if (solo[i] == '.') { //已到整数小数点
            IntdecimalPoint = true; //设为true
        }
        if (solo[i - 1] == '.') { //已到小数小数点
            DoudecimalPoint = true; //设为true
        }
        if (!IntdecimalPoint) { //检测是否已过整数小数点
            strInt += solo[i]; //整数字符串 += 数字型字符
        }
        if (DoudecimalPoint) { //检测是否已到小数小数点
            strDecimal += solo[i]; //小数字符串 += 数字型字符
        }
    }
    for (int i = 0;i < strInt.length();i++) { //把整数字符串转换为整数
        integer += (strInt[i] - '0') * pow(10,strInt.length() - i - 1);
    }
    for (int i = 0;i < strDecimal.length();i++) { //把小数字符串转换为小数
        decimal += (strDecimal[i] - '0') * pow(10,0 - i - 1);
    }
    double number = integer + decimal; //加起来
    return number; //返回
}

思路

第一步

先把整个字符串拆成整数部分和小数部分,为了拆分,我添加了整数部分小数点和小数部分小数点。

拆分字符串的语句:

    double integer = 0; //整数部分(为了相加)
    string strInt = ""; //整数字符串
    double decimal = 0; //小数部分
    string strDecimal = ""; //小数字符串
    bool IntdecimalPoint = false; //是否已过整数小数点
    bool DoudecimalPoint = false; //是否已到小数小数点
    for (int i = 0;i < solo.length();i++) { //求整数字符串和小数字符串
        if (solo[i] == '.') { //已到整数小数点
            IntdecimalPoint = true; //设为true
        }
        if (solo[i - 1] == '.') { //已到小数小数点
            DoudecimalPoint = true; //设为true
        }
        if (!IntdecimalPoint) { //检测是否已过整数小数点
            strInt += solo[i]; //整数字符串 += 数字型字符
        }
        if (DoudecimalPoint) { //检测是否已到小数小数点
            strDecimal += solo[i]; //小数字符串 += 数字型字符
        }
    }

第二步 

然后用库里面的pow(乘方)函数来把小数和整数的字符串转换为小数和整数。

转换的代码:

    for (int i = 0;i < strInt.length();i++) { //把整数字符串转换为整数
        integer += (strInt[i] - '0') * pow(10,strInt.length() - i - 1);
    }
    for (int i = 0;i < strDecimal.length();i++) { //把小数字符串转换为小数
        decimal += (strDecimal[i] - '0') * pow(10,0 - i - 1);
    }

第三步 

最后,把小数和整数加起来就可以了。

代码:

    double number = integer + decimal; //加起来
    return number; //返回

小数 -> 字符串

代码

展示

string doubleStr (double solo) {
    return to_string(solo);
}

用系统的内置函数to_string(double number)就可以完成转换。

 再见!

你可能感兴趣的:(c++)