如何在 C++ 和 R 中具有完全相同的数字格式
How to have the exact same formatting of numbers in C++and R?
我正在用R为C++中的程序编写功能测试。典型的输出文件将一些列作为"字符串",其他列为"双精度"。然后,我想使用 diff
将 R 返回的预期输出文件与 C++ 返回的观察到的输出文件进行比较。
在伪C++中,我只是这样做:
stringstream ssTxt;
ssTxt.precision (7);
ssTxt.setf (ios::scientific);
for(i=0; i<10; ++i){
ssTxt << names[i] << " " << values[0][i] << " " << values[1][i] << " " << values[2][i] << endl;
// write in file and clear ssTxt
}
下面是一个典型的输出:
item1 2.8200000e-01 500 4.1846912e-04
在 R 中,我这样做:
results <- data.frame(name="item1", val1=0.282, val2=500, val3=0.00041846912873)
write.table(x=format(results, digits=8, nsmall=7, scientific=TRUE), file=...)
以下是对应于相同数据的输出:
item1 2.82e-01 500 4.1846912e-04
如您所见,它几乎可以工作,但 R 不会在"2.82"之后添加尾随 0。我更喜欢更改 R 代码而不是C++代码。那我该怎么做呢?
你试过
吗 sprintf
还是formatC
?
具体来说,我认为
sprintf("%e", 2.82e-01)
应该可以解决问题,但如上所述,请查看帮助(sprintf),它描述了此函数的各种格式化功能......
相关文章:
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 以C++格式将字符串转换为数字
- 在处理C 中的数字格式时,在SetPrecision中使用固定关键字
- 如何使用正则表达式将输入数字格式化为字符串
- 如何编写正则表达式以匹配以下数字格式?
- 找到printf的意外错误,该格式为0.1F,用于四舍五入数字
- printf 的浮点格式标志 (%f) 仅适用于英文数字格式
- 如何设置数字格式以显示C 中的所有小数位数
- 使用字符串格式限制十六进制数字的数量
- 如何使用 c++ 对 p/q 格式中的数字进行排序
- MinGW中的数字格式设置更改
- php和c++中数字格式/浮点之间的区别
- 如何在 C++ 和 R 中具有完全相同的数字格式
- 如何在自己的函数中最好地处理Mat中的不同数字格式
- 十进制数字的区域设置感知编辑控件子类化(格式[sign][xxx..][decimal separator][yy.])
- 是否有预定义的内置函数将数字转换为C++二进制格式
- 使用sscanf c++检查格式并获取数字
- SCANF 格式说明符仅读取数字
- 以具有多个点(版本号)的格式将数字强制转换(转换)为字符串
- 如何提高逗号格式数字的性能