【发布时间】:2020-03-21 23:00:56
【问题描述】:
使用 GSL(GNU 科学图书馆),我试图理解为什么 gsl_vector_view_array() 在赋值后返回一个稍微修改的值。
在下面的代码中,我声明了一个链接到表 q_test[0]=0.0 的 vector_view 'qview_test',并显示其值为 0.0。然后,我更改了 q_test[0]=1.12348 的值并期望 qview_test 的值相同,但它被更改为 qview_test=1.1234800000000000341771055900608189。
你如何解释这样的结果?如何在没有 GSL 的情况下复制结果?
#include <iostream>
#include <gsl/gsl_blas.h>
using namespace std;
double q_test[1]={0.0};
gsl_vector_view qview_test;
int nb_variable = 1;
int main()
{
qview_test=gsl_vector_view_array(q_test,nb_variable);
cout.precision(35);
cout << "qview before: " << gsl_vector_get(&qview_test.vector,0)<< endl;
// Assign value
q_test[0]=1.12348;
cout << "qview after: " << gsl_vector_get(&qview_test.vector,0) << endl;
return 0;
}
感谢您的帮助,
H.Nam
【问题讨论】:
标签: c++ vector memory-management view gsl