通过两个类时出现奇怪的输出数据

Strange output data when passing through two classes

本文关键字:数据 输出 两个      更新时间:2023-10-16

我的统计llib有一些不稳定的数字结果:所以我刚开始寻找原因:在NDK c++侧发现了一些非常奇怪的带有android_log的输出数据。

这是我的代码部分,其中是日志:

数据是输入矩阵

SpectralClustering::SpectralClustering(Eigen::MatrixXd& data, int numDims)
    : mNumDims(numDims), mNumClusters(0)
{
    Eigen::MatrixXd Deg;
    for ( int ijk2 = 0; ijk2 <data.rows(); ++ijk2) {
        double fde=data(ijk2,0);
        LOGD( "This is a number from JNI: %d", fde );
    }
    Eigen::EigenSolver<Eigen::MatrixXd> es(data,true);
}

数据的数字在-1之间;1(我检查它是否正常),但当我用这个类传递和创建对象时:

SpectralClustering* cls = new SpectralClustering(DATA, spec_vec4);

输出数据非常奇怪,大约是16058451212…

我想问题会出在哪里和内存上,但当我删除这个时,它是一样的。

您确实将double打印为int,因此您的代码中有未定义的行为

您可能需要使用正确的浮点格式"%f"。参见本printf参考资料。