2
我正在使用Armadillo線性代數庫來對角化矩陣。我需要增加最後顯示/寫入文件的位數。根據Armadillo的reference,「arma :: mat」將創建一個雙矩陣。所以,我嘗試從「iomanip」使用std :: setprecision,但它並沒有工作。下面是抓住了問題的最小碼:如何增加使用Armadillo庫時顯示的位數
#include<iostream>
#include<armadillo>
#include<iomanip>
int main()
{
double Trace_A = 0.;
arma::mat A;
A = :arma::randu<arma::mat>(5,5);
Trace = arma::trace(A);
// Normal output
std::cout << "A = \n" <<A ;
std::cout << "Trace(A) = " << Trace_A << std::endl;
std::cout << "---------------------------------------------" << std::endl;
// Displaying more digits
std::cout << std::fixed << std::setprecision(15);
std::cout << "A = \n" << A;
std::cout << "Trace(A) = " << Trace_A << std::endl;
}
而且,這裏是我得到:
A =
0.8402 0.1976 0.4774 0.9162 0.0163
0.3944 0.3352 0.6289 0.6357 0.2429
0.7831 0.7682 0.3648 0.7173 0.1372
0.7984 0.2778 0.5134 0.1416 0.8042
0.9116 0.5540 0.9522 0.6070 0.1567
Trace(A) = 1.83848
---------------------------------------------
A =
0.8402 0.1976 0.4774 0.9162 0.0163
0.3944 0.3352 0.6289 0.6357 0.2429
0.7831 0.7682 0.3648 0.7173 0.1372
0.7984 0.2778 0.5134 0.1416 0.8042
0.9116 0.5540 0.9522 0.6070 0.1567
Trace(A) = 1.838476590271330
奇怪的是,它爲它傳遞給雙變量「Trace_A」跟蹤但不適用於矩陣本身。任何想法我在這裏做錯了嗎?
沒有。據推測,lib本身在打印之前會對流進行精確設置。 – 2014-11-08 16:46:59