为什么双精度数据类型在C++中出错?
Why is double data type gives error in C++?
这是我编写的C++程序,用于获取从1到100的斐波那契数。
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
int main()
{
int n;
vector<double> f;
//adding first two fibonacci numbers to vector
f.push_back(0);
f.push_back(1);
cout<<"How many fibonacci numbers do you want : ";
cin>>n;
for(int i=0; i<n; i++)
{
if(i>1) f[i] = f[i-1] + f[i-2];
cout<<(i+1)<<": "<<fixed<<setprecision(0)<<f[i]<<endl;
}
}
所有结果在最多 79 个值之前都是正确的,但在第 80 个值之后并不完全是 78 和 79 个值的总和。 输出为:
....
78: 5527939700884757
79: 8944394323791464
80: 14472334024676220
....
这里的最后一个数字应该是 1,但它显示 0,为什么会发生这种情况?
不能对向量中尚不存在的向量元素使用下标运算符。
所以使用例如
if(i>1) f.push_back( f[i-1] + f[i-2] )
;
请注意,double
类型的对象可能无法正确存储给定范围内的所有斐波那契数。您可以使用类型long double
代替类型double
。
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 导入/导出变量时出错
- PrintWindow函数在notepad.exe中出错