0

可能重复:
乘以 1.0 和 int <=> float 转换的精度

我正在使用犰狳 c++ 线性库,并且难以获得一致的结果。当我打印向量 freq 时,这些是正确的值,但是当我将它与标量值相乘时,它是错误的。即使使用频率 * 1.0!任何建议都会很棒。

mat::fixed<621,1>freq; 
2.0 * arma::datum::pi * freq
4

1 回答 1

1

我无法复制你的问题。

您需要发布演示问题的确切独立代码。换句话说,您正在使用的所有功能。这意味着您发布的程序可以在没有任何其他功能的情况下编译,并且仅使用 Armadillo 依赖项(即没有 Matlab)。

使用以下代码时,我没有遇到任何问题:

#include <iostream>
#include "armadillo"

using namespace arma;
using namespace std;

int main(int argc, char** argv)
  {
  mat::fixed<621,1> freq;
  freq.ones();

  cout << 2.0 * arma::datum::pi * freq << endl;

  return 0;
  }

顺便说一句,谷歌搜索 matlab2arma() 函数(在问题的评论中提到)显示了第 3 方完成的黑客攻击。将固定大小的矩阵与涉及手动内存管理的任何类型的黑客混合使用可能会导致问题。除非您知道自己在做什么,否则不要修改内部 Armadillo 指针。

于 2012-11-26T02:45:53.573 回答