可能重复:
Precision of multiplication by 1.0 and int <=> float conversion
我正在使用armadillo c ++线性库,并且难以获得一致的结果。当我打印向量时,freq,这些是正确的值,但是当我将它与标量值相乘时,它是错误的。即使使用freq * 1.0!任何建议都会很棒。
mat::fixed<621,1>freq;
2.0 * arma::datum::pi * freq
答案 0 :(得分: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()函数(在问题的评论中提到)显示了第三方所做的黑客攻击。将固定大小的矩阵与涉及手动内存管理的任何类型的黑客混合可能会导致问题。除非你知道自己在做什么,否则不要修改内部犰狳指针。