У MY stattic llib есть некоторые неустойчивые числовые результаты: поэтому я только начал искать причину: и нашел некоторые очень странные выходные данные с android_log в стороне NDK c++.
Это моя часть кода, где находится журнал:
Данные вводятся матрицейd
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
.