首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >卡住了我的c++赋值(将字符串转换为浮动)

卡住了我的c++赋值(将字符串转换为浮动)
EN

Stack Overflow用户
提问于 2014-03-14 10:43:29
回答 2查看 178关注 0票数 0

我是c++新手,我试图编写一个代码来将字符串转换为浮动(我不应该使用atof),但是代码的输出是0。请帮助我理解问题所在:

代码语言:javascript
运行
复制
char A[10];
int N[10],c,b=10,a=0,p=0,i;
float s=0.1;
cout<<"reshte ra vared namaeed:";
cin>>A;


for( i=0;A[i]=!'.';i++)
{

a=(a*b)+(A[i]-48);


}


for(A[i]=='.';A[i]!='\0';i++)
{
p=(p*s)+(A[i]-48);


}
cout<<a+p;


getch();
return 0;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-14 13:09:25

如果作业需要你演示数学,你可以使用这样的方法:

代码语言:javascript
运行
复制
char A[10];    

int f1=0;
int dot_index=0;

cout << "Enter a floating point number:" << endl;
cin>>A;

for(int i=0; A[i]!='.'; i++)
{            
    f1= ( f1*10 ) + ( A[i]-48 );       
    dot_index=i+1; //we will stop 1 char before '.'
}

float f2=0;
int count=1;

for(int i=dot_index+1;A[i]!='\0';i++)
{
    float temp1 = static_cast<float>(A[i]-48);
    float temp2 = pow(10,count);       
    f2+= temp1/temp2;                
    count++; 
}

float f = f1 + f2;
cout<< " float : " << f1 << "+" << f2 << " = " << f << endl;
printf("\n float %.10f",f);

然而,我怀疑某些浮点计算的精度会出现问题。

票数 0
EN

Stack Overflow用户

发布于 2014-03-14 11:04:23

您可以使用StringStream。

代码语言:javascript
运行
复制
#include <iostream>
#include <string>
#include <sstream>

你可以很容易地使用它。例如:

代码语言:javascript
运行
复制
stringstream sstr;
string s;
float f;
cin >> s; // Get input from stdin
sstr << s; // Copy string into stringstream
sstr >> f; // Copy content of stringstream into float
cout << f << endl; // Output your float

当然,您可以将其放入函数/模板中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22402781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档