R

时间:2017-01-07 18:59:18

标签: r permutation biginteger

我在R上面临以下计算问题。我想找到因子10乘以0.1。我可以在R上使用factorial()函数但是为了检查包“gmp”和“Rmpfr”的效率,我使用了factorialZ()。令人惊讶的是,我发现乘法变为0(零)。它给出了输出Big Integer('bigz'):0。我该怎样处理这个?任何领导都会有所帮助。感谢。

1 个答案:

答案 0 :(得分:1)

我不确定为什么会发生这种情况(我认为它取决于被乘数是否具有精确的二进制表示,但我认为我错了)。更可能的是它只是一个未定义的行为 - 即包装作者应该使bigz个对象与常规R numeric对象很好地结合没有特定的原因。如果你想除以10,就这样做:

factorialZ(10)/10
Big Rational ('bigq') :
[1] 362880

首先转换回常规R整数:

as.integer(factorialZ(10))*0.1
[1] 362880

如果你有一个数字不能表示为R整数或数字(例如> 1e310)但是需要在具有浮点值的操作中使用它,你可以转换为mpfr类型(高精度浮点数):

.bigz2mpfr(factorialZ(200))*0.1
1 'mpfr' number of precision  1248   bits 
[1] 78865786736479054733166935894034745829709731011205555800275415888196330271667643800669079467809137225619298895315986676109948164059578143835819967701344559489245054862932798359603276806168730010575811932061231243634893448846943919677538088311404392920603667803910252938083642743828224123449104546887425346845059274452636794880000000000000000000000000000000000000000000000000