大整数计算有什么问题?

问题描述 投票:0回答:1

下面的等式与对整数不做任何操作相同

((as.bigz(27080235094679553)+1028)*2)/2 - 1028

但是,控制台中的答案是 27080235094679552。要获得正确答案,我需要减去 1027 而不是 1028。这里有什么问题?

我也尝试使用

mfpr
包,但它不起作用。

r biginteger computation
1个回答
0
投票

当您输入 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
© www.soinside.com 2019 - 2024. All rights reserved.