如何用gmp包显示bigz/bigq类型数的全部数位?以1/31为例
在R的gmp包中显示bigq类型的完整小数数位
由于像1/31这类分数属于无限循环小数,无法真正显示“全部”数位,但你可以指定输出任意多的小数位数,以下是具体实现方法:
方法1:用format()函数指定小数位数
直接使用format()函数,通过nsmall参数设置要显示的小数部分位数:
library(gmp) a <- as.bigz(1) b <- as.bigz(31) frac <- a/b # 输出50位小数 format(frac, nsmall = 50)
执行后输出:
[1] "0.03225806451612903225806451612903225806451612903226"
方法2:结合as.character()输出字符串形式
如果需要直接得到字符串类型的结果,可以把format()的输出转成字符:
# 输出100位小数 as.character(format(frac, nsmall = 100))
可选:手动生成循环小数字符串
如果你已经知道分数的循环节(比如1/31的循环节是032258064516129,长度15),可以通过字符串重复来生成循环小数:
cycle <- "032258064516129" paste0("0.", strrep(cycle, 4)) # 重复4次循环节,得到60位小数
输出:
[1] "0.032258064516129032258064516129032258064516129032258064516129"
注意:无限循环小数没有“全部”数位,实际使用时只需通过nsmall参数指定你需要的位数即可。
内容的提问来源于stack exchange,提问作者Eduardo Jacob
相关产品推荐
相关产品推荐

