paste0()函数更改小数位数

时间:2015-05-21 08:26:09

标签: r

R version 3.2.0 (2015-04-16)OS Ubuntu 14.04 最近我遇到了一个非常奇怪的问题,这真的很烦人。

代码:

q[94]
# [1] -0.7
paste0(q[94],".dat")
# [1] "-0.699999999999999.dat"
paste0(-0.7,".dat")
# [1] "-0.7.dat"

paste0功能只是将-0.7更改为-0.699999999999999。 这个问题不仅发生在q[94],也发生在另一个问题上 变量q中的元素(并非所有元素)。但我无法弄清楚这方面的任何模式 问题。在这种情况下,小数位数的变化在不同的路径上不是随机的。 -0.7将始终更改为-0.699999999999999。我怀疑问题与options("digits"=)有关,但我试图在没有任何帮助的情况下更改此选项。另一件事是这个问题也发生在我使用Cent Os 4.5 R version 3.1.3 (2015-03-09)的服务器上。

更新:我尝试了paste0(as.character(q[94]),".dat"),但这不起作用。即使我使用as.character(q)将整个矢量转换为字符向量,也会发生这个问题。

编辑以澄清:此问题Why are these numbers not equal?中的答案对浮点数给出了很好的解释。我想在这里做的只是将数字转换为 我看到的字符串没有任何意外结果。因此,如果 我使用paste0()函数应该做什么?

更新:最佳解决方案是使用sprintf()函数来控制浮点数的数字

0 个答案:

没有答案