字符串 -> 小数
代码
展示
提示:
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)就可以完成转换。
再见!