R:从bigz有理数中仅获取整数

时间:2015-10-09 22:29:01

标签: r gmp

说我有一个bigz号码

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

1 个答案:

答案 0 :(得分:3)

您可以使用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