下面的等式与对整数不做任何操作相同
((as.bigz(27080235094679553)+1028)*2)/2 - 1028
但是,控制台中的答案是 27080235094679552。要获得正确答案,我需要减去 1027 而不是 1028。这里有什么问题?
我也尝试使用
mfpr
包,但它不起作用。
当您输入 27080235094679553 作为数值常量 作为
as.bigz
的参数时,R 首先解析该数字并将其存储为双精度浮点数。您需要以 character 的形式输入值,这样才不会弄乱:
library(gmp)
((as.bigz("27080235094679553")+1028)*2)/2 - 1028
## Big Rational ('bigq') :
## [1] 27080235094679553
进一步说明:
print(27080235094679553, digits = 22)
## [1] 27080235094679552