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

该篇文章介绍了如何使用C++编程语言将字符串形式的小数拆分成整数和小数部分,并分别转换为double类型。作者通过遍历字符串,判断小数点位置,然后利用`<cmath>`库中的`pow`函数进行转换。最后提供了一个将double转换回字符串的辅助函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 字符串 -> 小数

代码

展示

提示:

solo为转换的字符串

number为返回的小数

#include <cmath>
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]; //小数字符串 += 数字型字符
        }
    }

第二步 

然后用<cmath>库里面的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)就可以完成转换。

 再见!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值