打印精度高达小数点后 4 位的双精度数据类型 - Armadillo

Posted

技术标签:

【中文标题】打印精度高达小数点后 4 位的双精度数据类型 - Armadillo【英文标题】:Print double data type with a precision upto 4 decimal places - Armadillo 【发布时间】:2020-08-11 11:15:54 【问题描述】:

我正在尝试使用 c++ 中的犰狳库来执行以下操作。

每当我打印出一个矩阵 (arma::mat) 时,它总是以以下形式打印:-

1.0594e+03   1.0439e+04   0.3425e+04
1.0232e+03  12.0319e+04   0.1225e+04
11.5044e+03   1.231e+04   0.3424e+04

我想知道是否有办法删除 e+04 并实际打印出整个数字,例如:-

 1059.4   1043.9  3425.0
1023.23 120319.0  1225.0
11504.4   1231.0  3424.0

【问题讨论】:

能否提供一个小示例代码,用于创建矩阵并打印出来,计算精度的规则是什么?在您的预期输出中,一个数字有两位小数,所有其他数字有一位小数。另请提供犰狳文档的链接 【参考方案1】:

我在谷歌上搜索了一下http://arma.sourceforge.net/docs.html#raw_print,上面写着:

类似于 .print() 成员函数,不同之处在于没有对输出进行格式化;流的参数,如精度、单元格宽度等可以手动设置

并显示这个例子:

mat A = randu<mat>(5,5);

cout.precision(11);
cout.setf(ios::fixed);

A.raw_print(cout, "A:");

如果这是您要查找的内容,那么您可以在此处进一步研究:https://en.cppreference.com/w/cpp/io/ios_base/fmtflags 以查看您可以设置的其他格式参数。

【讨论】:

以上是关于打印精度高达小数点后 4 位的双精度数据类型 - Armadillo的主要内容,如果未能解决你的问题,请参考以下文章

验证并打印 2 个小数位的双精度值

打印带有 2 位小数的双精度值和 .不是,[重复]

如何在小数点后将 Dart 中的双精度数舍入到给定的精度?

关于json解析float数据精度的问题

打印没有科学格式的双精度并四舍五入到最接近的整数[关闭]

Java - Decimal Format.parse 返回具有指定小数位数的双精度值