Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中将字符串转换为浮点+;具有完整有效数字[在Dev C+;和#x2B;中固定工作]_C++_String_Casting_Type Conversion_Double - Fatal编程技术网

C++ 在C+中将字符串转换为浮点+;具有完整有效数字[在Dev C+;和#x2B;中固定工作]

C++ 在C+中将字符串转换为浮点+;具有完整有效数字[在Dev C+;和#x2B;中固定工作],c++,string,casting,type-conversion,double,C++,String,Casting,Type Conversion,Double,我想将包含数字浮点的字符串转换为具有完整有效数字的浮点或双精度数据类型值。请帮助我解决此问题 #包括 #包括 #包括 使用名称空间std; int main() { 字符串q=“23.3453535”; 浮动f; istringstream(q)>>f; f=1.0*f;//堆栈溢出查看器这是一个示例,因为我想处理这个浮点值 cout如果您想要控制精度,那么包括#包括和使用std::cout这里有两个问题: 您在std::ostream上遇到了浮点输出的默认格式,即6位数字。请使用std::se

我想将包含数字浮点的字符串转换为具有完整有效数字的浮点或双精度数据类型值。请帮助我解决此问题

#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串q=“23.3453535”;
浮动f;
istringstream(q)>>f;
f=1.0*f;//堆栈溢出查看器这是一个示例,因为我想处理这个浮点值

cout如果您想要控制精度,那么包括
#包括
和使用
std::cout这里有两个问题:

  • 您在
    std::ostream
    上遇到了浮点输出的默认格式,即6位数字。请使用
    std::setprecision(n)
    增加精度,以覆盖所需的足够小数位

  • 您正试图从
    浮点数中获得比它支持的精度更高的精度。
    “23.3453535”
    的长度为9位,因此每位3.3位,大约需要30位来存储此数字,并保留所有位。(确切地说,您需要
    ceil(log(233453535)/log(2))
    即28位).A
    float
    只有23位来存储尾数,因此当值在可表示的范围内时,最后的一些数字将消失。您可以通过使用
    double
    而不是
    float
    ,来解决此问题-但是作为
    float
    ,您将永远无法获得9个有效的十进制数字


  • 是的,所以我将用double更改float,但是现在将字符串转换为double的代码是什么呢?
    stringstream>>var
    应该可以做到这一点,但是这不起作用呢?谢谢你的回答也帮助了我:)先生,我想要另一个八进制转换为字符串的东西,比如:Hello World中的1101451541570417271717172154144(附图片)@UmairSajidMinhas:-你需要问一个单独的问题。也要分享你在这方面的努力!@UmairSajidMinhas:-对于这个问题,我可以给你答案,
    res=std::to_string(std::stoi(你的八进制,0,8));}但是,在UmairSajidMinhas,我不应该在DEV C++编译器中工作。你的建议是什么?我应该改变编译器,或者你给我另一个DEV C++代码?@::-DEV C++。我甚至不确定我是否在这方面工作过:(
    
    #include <sstream>
    #include<iostream>
    #include<string>
    using namespace std;
    int main()
    {
    string q = "23.3453535";
    float f;
    istringstream(q) >>f;
    f=1.0*f;   // stack-overflow viewer it is an example because i want to process this float value 
    cout<<f;
    }
    
    /*OutPut is:
    23.3454
    but i want this 
    23.3453535
    */