Cout long double issue
Cout long double issue
所以,我正在做一个C++项目。我有一个长双精度类型的变量,并为其分配了一个类似"1.02"的值
然后,我尝试使用 cout 打印它,结果是:-0
我已经尝试使用设置精度,我发现谷歌搜索问题。
对此的解决方案是什么?
示例代码:
#include <cstdlib>
#include <iomanip>
using namespace std;
int main(int argc, char** argv)
{
cout.precision(15);
long double var = 1.2;
cout << var << endl;
return 0;
}
操作系统: 视窗 8.1 64 位编译器: minGWIDE: NetBeans 8.0.2
这似乎是编译器的问题。看看这里: http://mingw.5.n7.nabble.com/Strange-behaviour-of-gcc-4-8-1-with-long-double-td32949.html
在传递到cout
之前,请使用printf
或将变量的值转换为double
。(顺便说一句,你确定你需要80位精度吗?
这是一种更简单的方法,但您的程序适用于我的编译器。
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
std::setprecision(10);
long double var = 1.023563457578;
cout << var << endl;
return 0;
}
我希望这可以帮助您看到您的编译器实际上可能有问题。
来源 ->链接
我在代码中完全没有看到任何错误。我只是把它放成标准格式,它就可以工作了。这是假设您发布的内容是整个内容的代码。
#include <iostream>
using namespace std;
int main(){
long double var = 1.0202;
cout.precision(5);
cout << var << endl;
}
我希望这能回答你的问题。
编辑:附言越短越好,所以我有一个更好的解决方案(固执己见(。
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
long double var = 1.0202;
//cout.precision(5);
cout << setprecision(5) << var << endl;
}
我认为这个更好,因为它更短。如果您正在做更复杂的十进制内容,我还建议您使用 printf,因为 printf 可以选择哪些变量(如果您有多个(具有小数或多少。
我刚刚弄清楚了问题。它是cstdlib而不是iostream的包含。
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- C++在数学计算中将double转换为int
- 在c++中为double类型的数组创建一个unique_ptr
- vector<vector<double>> to mxArray using memcpy
- (double) 和 double() 之间的区别
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- C++ Version Of Double.longBitsToDouble
- Issue with WriteProcessMemory
- std::partition segfault issue
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- VSCode C/C++ Intellisense issue: Undefined identifiers (Linu
- 为什么 nlohmann/json 序列化 "null" 而不是在 double 上"0"?
- 使用 std::vector<double> 访问由 std::unique_ptr<double[2] 管理的数据>
- 将 std::vector<double> 从 C++ 包装到 C 以在 Swift 中使用
- 错误:无法将"<lambda(double)>"转换为"double(*)(double)"
- OpenGL glBufferSubData Offset issue
- 如何正确将"strings"转换为"double"?
- boost::property_tree XML issue
- Cout long double issue