【问题标题】:r min function does not return the correct number of decimalsr min 函数不返回正确的小数位数
【发布时间】:2015-11-29 15:34:19
【问题描述】:

在 R 中,我在数值向量上使用 min 函数,例如这个向量:

v <- c(16.22900, 16.28857, 16.47363, 16.47412, 16.00000, 16.49463, 16.27246, 16.0366, 16.49609)

但是当我应用 min 函数时,我得到了这个返回值

min(v)
[1] 16

相反,我想要这样的结果:

[1] 16.00000

我检查了向量的类别,但一切似乎都正常

class(v)
[1] "numeric"

问题出在哪里?

【问题讨论】:

  • 我不知道这是否有问题,但 R 不显示尾随零。如果是出于输出/打印原因,您可以尝试sprintf("%.5f", min(v))。可能是多余的,但这会产生一个字符串。
  • 不幸的是,我需要那些尾随零来进行一些高精度计算,而不是用于打印。
  • 你误会了。 16.0000 仍然与 16.0 相同。
  • 它们还在,只是没有显示。 16*0.12345 产生 1.9752,16.0000*0.12345 产生相同的结果。
  • min() 返回正确的结果。您想要的结果在某种程度上取决于您没有向我们展示的内容。 R(没有任何附加包)不是任意精度计算器。

标签: r decimal precision min numeric


【解决方案1】:

你被夹在值的内部表示它的显示方式之间。

R> v <- c(16.22900, 16.28857, 16.47363, 16.47412, 16.00000, 
+         16.49463, 16.27246, 16.0366, 16.49609)
R> min(v)
[1] 16
R> sprintf("%10.8f", min(v))
[1] "16.00000000"
R> identical(min(v), 16.0000000000000000000)
[1] TRUE
R>

【讨论】:

    猜你喜欢
    • 2020-10-04
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    相关资源
    最近更新 更多