R:只从大有理数中取整数

  • 本文关键字:整数 有理数 gmp
  • 更新时间 :
  • 英文 :


假设我有一个大数字

library(gmp)
x <- as.bigz(99999)^99
y <- x/66^99

现在我想提取整数部分,如果这个数字写成一个混合数(例如183和15/21)。对于一个较小的数字,我可以floor(as.numeric(y)),但我最终会失去精度(对于这个数字,R将返回Inf)。

我想简单地做floor(y),但这会返回和错误,除非y是一个整数。

我们可以想象一个更简单的情况:

floor(33/7)
# returns 4
floor(as.bigz(33)/7)
# does not return 4

您可以使用as.bigz()bigq(这就是您的y)转换为大整数:

library(gmp)
x <- as.bigz(33)
y <- x/7
as.bigz(y)
# Big Integer ('bigz') :
# [1] 4

或者,如果不需要y作为中间值,可以使用整数除法运算符%/%,如下所示:

x %/% 7
# Big Integer ('bigz') :
# [1] 4

最新更新