【问题标题】:R working with big decimal numbersR处理大十进制数
【发布时间】:2018-05-11 20:37:14
【问题描述】:

我正在尝试打印到控制台,甚至检查我的数据框对象中的数字,这些数字包含带有 8 位小数的大十进制数字,例如:“1054792997932.50564756”(数字的类别是 numeric

我尝试使用 print()cat()View() 检查单个数字,但我得到的唯一结果是整数“1054792997932”,除非我使用 sprintf("%.8f", number),否则无法看到小数位,但我得到的输出是错误的数字:

> sprintf("%.8f", 1054792997932.50564756)
[1] "1054792997932.50561523"

所以从外观上看,sprintf 不是检查或格式化大十进制数的好方法。

我在验证和处理这些数字时遇到了问题

系统设置为:

R version: 3.4.0

我使用非常标准的包:

R stats and R Utils

【问题讨论】:

  • 我建议你研究这个答案:stackoverflow.com/a/9508558/1412059
  • @LAP 您的示例适用于显示,谢谢,这真的很有用,有没有办法使用大数字的圆形以及我们尝试了以下但它不起作用 ">round(105479299792.675994873, 4)" => "[1] 105479299792.675994873"
  • 有趣。当四舍五入到小数点后 1 或 0 时,您的示例适用于我,但对于更多小数点,它始终显示 105479299792.67599。我不确定为什么这不起作用。由于浮点运算,它可能是一个伪影(请参阅@Roland 提供的链接)。
  • 感谢大家的帮助,@LAP f 您可以提出您的回复作为答案,我会接受,再次感谢

标签: r


【解决方案1】:

您可以使用选项"digits" 更改控制台中显示的位数。

要查看您当前的设置,请键入

getOption("digits")

默认设置为 7。使用

options("digits" = 22)

您可以更改设置。 22R 可以显示的最大位数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2021-12-02
    • 2011-04-26
    • 2014-09-14
    • 1970-01-01
    相关资源
    最近更新 更多