如何将 std:fixed << setprecision(5) 的结果分配给 C++ 中的变量
How to assign results from std:fixed << setprecision(5) to variable in c++
无法找到以下问题的答案:
我是 C++ 的新手,现在正在做一些测试。我正在使用 std::fixed 和 std::setprecision 函数来获取带有 5 个零的十进制数。这可以使用 cout,但我不知道如何将结果分配给变量而不是使用 cout 打印它们。
//Works
int fetchJD(std::string str) {
std::cout << std::fixed << std::setprecision(0) << str;
return 0;
}
我尝试过使用 sstream 之类的方法,但每当我尝试将结果分配给另一个字符串以便我可以 return 结果时,编译器就会失败。
// Not working
int fetchJD(std::string str)
{
std::stringstream ss;
string temp;
ss << std::fixed << std::setprecision(0) << str;
temp = ss.str();
return temp;
}
这导致编译器出现错误:
In function ‘int fetchJD(std::__cxx11::string)’:
astroapp.cpp:43:12: error: cannot convert ‘std::__cxx11::string {aka
std::__cxx11::basic_string<char>}’ to ‘int’ in return
return temp;
那么我如何传递 std::fixed << std::setprecision(0) << str; 的结果?进入另一个字符串?
您仍然需要将结果转换回 int
(但这永远不会改变整数的显示方式)。
return std::stoi(ss.str());
这给你一个 int
,一个简单的 int
,没有精度,什么也没有。所有更改精度和 fixed
的处理都不会改变任何内容,因为开头有一个字符串,这些修饰符不会更改它。
所以基本上你没有对你的函数做任何事情。
如果要将字符串转换为值,请使用 stoi
、stod
...
您需要区分变量中的值,例如double somevalue = 1.0;
使用 cout 在屏幕上向用户显示的内容。流指令 setprecision 和 setfixed 将 double/float 值转换为特定的 output 格式。如果要将输出的内容转换为字符串,请使用 stringstream 而不是 cout。
std::cout << std::fixed << std::setprecision(0) << somevalue;
对
std::stringstream ss;
ss << std::fixed << std::setprecision(0) << somevalue;
那么你就有了字符串ss.str()
中的内容
无法找到以下问题的答案:
我是 C++ 的新手,现在正在做一些测试。我正在使用 std::fixed 和 std::setprecision 函数来获取带有 5 个零的十进制数。这可以使用 cout,但我不知道如何将结果分配给变量而不是使用 cout 打印它们。
//Works
int fetchJD(std::string str) {
std::cout << std::fixed << std::setprecision(0) << str;
return 0;
}
我尝试过使用 sstream 之类的方法,但每当我尝试将结果分配给另一个字符串以便我可以 return 结果时,编译器就会失败。
// Not working
int fetchJD(std::string str)
{
std::stringstream ss;
string temp;
ss << std::fixed << std::setprecision(0) << str;
temp = ss.str();
return temp;
}
这导致编译器出现错误:
In function ‘int fetchJD(std::__cxx11::string)’:
astroapp.cpp:43:12: error: cannot convert ‘std::__cxx11::string {aka
std::__cxx11::basic_string<char>}’ to ‘int’ in return
return temp;
那么我如何传递 std::fixed << std::setprecision(0) << str; 的结果?进入另一个字符串?
您仍然需要将结果转换回 int
(但这永远不会改变整数的显示方式)。
return std::stoi(ss.str());
这给你一个 int
,一个简单的 int
,没有精度,什么也没有。所有更改精度和 fixed
的处理都不会改变任何内容,因为开头有一个字符串,这些修饰符不会更改它。
所以基本上你没有对你的函数做任何事情。
如果要将字符串转换为值,请使用 stoi
、stod
...
您需要区分变量中的值,例如double somevalue = 1.0;
使用 cout 在屏幕上向用户显示的内容。流指令 setprecision 和 setfixed 将 double/float 值转换为特定的 output 格式。如果要将输出的内容转换为字符串,请使用 stringstream 而不是 cout。
std::cout << std::fixed << std::setprecision(0) << somevalue;
对
std::stringstream ss;
ss << std::fixed << std::setprecision(0) << somevalue;
那么你就有了字符串ss.str()
中的内容