使用犰狳将 csv 加载到 C++ 中的 fmat 时丢失小数

问题描述 投票:0回答:1

我的代码很简单:

arma::fmat fromMatlab;
fromMatlab.load(relPath + "/matrix.csv", arma::auto_detect);

我的 csv 包含以下数字:

0   0   2   4.8989795   -6.9282032  -4.8989795  -16.970563  -16.970563  28.284271

但是我的 C++ 代码返回没有小数的数字,例如:

0            0   2.0000e+00   4.0000e+00  -6.0000e+00  -4.0000e+00  -1.6000e+01  -1.6000e+01   2.8000e+01

我也尝试从 mat 加载数据,并将 fromMatlab 变量定义为 mat、fmat、Mat、Mat,错误始终相同。

发生了什么事?我正在使用犰狳 12.6,而 7.95 版本没有发生这种情况...

c++ armadillo
1个回答
0
投票

如果没有源代码,就很难推断出可能导致当前错误的原因,但如果我猜测(这只是猜测),在加载期间会发生一些从 float/double 的转换,正如我所看到的,小数点之前的任何内容都被截断(也许您的函数期望读取整数,而您正在打印浮点数)。也可能是打印过程中的问题,我的建议是你在打印语句之前放置一个断点,看看内存中实际写入了什么(Visual Studio 允许你通过调试器执行此操作)。

© www.soinside.com 2019 - 2024. All rights reserved.