aar*_*thi 2 algorithm r bigdecimal floating-point-precision
我正在尝试使用以下代码分解一个大整数:
library(gmp)
as.bigz(factorize( 113423713055421844361000443))
Big Integer ('bigz') object of length 38:
# [1] 2 2 2 2 2 2 2 2 2 2 2
# [12] 2 2 2 2 2 2 2 2 2 2 2
# [23] 2 2 2 2 2 2 2 2 2 2 2
# [34] 2 3 647 1134247 2998823
Run Code Online (Sandbox Code Playgroud)
这显然不是正确的分解,因为我的整数是奇数但factorize返回 2 作为因子。问题是什么?
尝试使用字符串创建 bigz 值:
> factorize(as.bigz("113423713055421844361000443"))
Big Integer ('bigz') object of length 4:
[1] 67003 29881 9119521 6212157481
Run Code Online (Sandbox Code Playgroud)
我相信你的问题是当你输入数字文字时,R 将它存储在浮点表示中,失去了精度。您需要在将 bigz 表示形式传递给 factorize 之前创建它,并且为了保持完全精度,您必须将其as.bigz作为字符串传递给。