OO-数字串char*与数值int_double之间转换
文章目录
- OO-数字串char*与数值int_double之间转换
- 一、任务描述
- 二、TestCase:
-
- 需要填空的代码
-
一、任务描述
功能: 将数字字符串转换为双精度浮点数
二、TestCase:
输入 ——输出
3.14 —— 3.14,4.14
2020.21——2020.21,2021.21
………
2.测试集
截图如下:
需要填空的代码
#include "Comm.h"
class Solution{
public:
double strTof(const char *s){
double power = 1.0;
int sign=0,i=0;
for(i=0;isspace(s[i]);i++);
while(s[i] == ' ')
{
i++;
}
if(s[i] == '-')
{
sign=1;
i++;
}
if(s[i]=='+')
{
i++;
}
double num=0.0;
while(s[i])
{
for(num=0.0;isdigit(s[i]);i++)
num=num*10+s[i]-'0';
if (s[i] == '.')
{
i++;
}
for(power=1.0;isdigit(s[i]);i++)
{
num=num*10+s[i]-'0';
power *= 10.0;
}
num = num / power;
return sign? -num : num;
}
}
};
源代码(可以复制在编译器里面自行调试)
#include <stdlib.h>
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <queue>
using namespace std;
class Solution{
public:
double strTof(const char *s){
double power = 1.0;
int sign=0,i=0;
for(i=0;isspace(s[i]);i++);
while(s[i] == ' ')
{
i++;
}
if(s[i] == '-')
{
sign=1;
i++;
}
if(s[i]=='+')
{
i++;
}
double num=0.0;
while(s[i])
{
for(num=0.0;isdigit(s[i]);i++)
num=num*10+s[i]-'0';
if (s[i] == '.')
{
i++;
}
for(power=1.0;isdigit(s[i]);i++)
{
num=num*10+s[i]-'0';
power *= 10.0;
}
num = num / power;
return sign? -num : num;
}
}
};
int main(){
string strDec = "0";
cin>> strDec;
Solution sol;
cout << strDec << endl;
cout << sol.strTof(strDec.c_str())+1 << endl;
return 0;
}
开始你的表演,祝你成功!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)