gpt4 book ai didi

c++ - 金融数字食谱(Bernt Arne Ødegaard 2007): output not matching example output

转载 作者:太空狗 更新时间:2023-10-29 23:06:03 24 4
gpt4 key购买 nike

我正在研究 Bernt Arne Ødegaard 2007 年用 C++ 编写的金融数字食谱,您可以在此处找到整个文档:http://finance.bi.no/~bernt/gcc_prog/recipes/recipes.pdf

该链接对于这个问题非常有用,因为我已经从那里复制了代码,而控制台的输出是不同的。

我已经完成了第 4 章(第 36 页)中的示例,当我运行这些示例(使用 visual studio 2012)时,我没有得到与示例输出中给出的相同的输出。我一直在寻找语法错误和偏差,但找不到。我也看不出输出应该不同的原因。

对于 bonds_price_dicrete,我得到的值为 0。

这是示例 financial_recipies.cpp 文件代码:

#include <cmath>
#include <vector>
using namespace std;

double bonds_price_discrete(const vector<double>& times,
const vector<double>& cashflows,
const double& r) {

double p=0;
for (int i=0;i<times.size();i++) {
p += cashflows[i]/(pow((1+r),times[i]));
};
return p;
};

主程序:

vector<double> cflows; cflows.push_back(10); cflows.push_back(10); cflows.push_back(110);

vector<double> times; times.push_back(1); times.push_back(2); times.push_back(3);

double r=0.09;

cout << " bonds price = " << bonds price discrete(times, cflows, r) << endl;

示例输出:

bonds price = 102.531

我认为这可能是一个整数与 float 的问题,但将所有 double 更改为 float 并没有做任何事情。这是我的 financial_recipes.cpp 代码:

double BondsPriceDiscrete(const vector<double> & Times, const vector<double> & cFlow, const double & rates)
{
double P = 0 ;

for (int i = 0 ; i < Times.size() ; i++)
{
P += cFlow[i]/(pow((1+rates),Times[i])) ;
};

return 0 ;
}

我的函数在 main() 中调用

const int BondsPriceDiscrete() 
{
vector <double> cflow ; cflow.push_back(10) ; cflow.push_back(10) ; cflow.push_back(110) ;
vector <double> Times ; Times.push_back(1) ; Times.push_back(2) ; Times.push_back(3) ;

double rates = 0.09 ;

cout << "Bond Price: " << BondsPriceDiscrete(Times,cflow,rates) << endl ;

return 0 ;
}

我的文件结构只是 financial_numerical_recipes 的头文件和 cpp 文件,我在头文件和 cpp 中的头文件中有包含保护和 #include cmath、vector、algorithm、iostream、string.h 和 stdafx.h运行 main 的文件。没有其他文件附件,代码运行良好,只是输出不匹配......

请注意,我将通过它们来练习金融中 c++ 用法的示例,而不是用于任何商业或产品用途。这也是我第一次发布有关堆栈溢出的问题,所以如果我遗漏了任何内容,请发表评论,我会对其进行更改。

最佳答案

观察函数返回的内容

double BondsPriceDiscrete(const vector<double> & Times, const vector<double> & cFlow, const double & rates)
{
double P = 0 ;

for (int i = 0 ; i < Times.size() ; i++)
{
P += cFlow[i]/(pow((1+rates),Times[i])) ;
};

// return 0 ;
return p;
}

关于c++ - 金融数字食谱(Bernt Arne Ødegaard 2007): output not matching example output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17049673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com