为什么as.character函数会丢失小数点?

6

我想知道为什么在 R 语言中 as.character(5.0) 返回 5,但是 as.character(5.1) 返回 5.1。我查阅了相关文档,但没有找到答案。


3
R无法区分5和5.0。它们在内部被存储为完全相同的数字,因此没有理由认为5.0会产生与5不同的结果。 - G. Grothendieck
1
运行 identical(5.0, 5) 来查看 55.0 是相同的对象。它们都被存储为双精度浮点数。 - slava-kohut
这与R FAQ 7.31和https://dev59.com/_Gkw5IYBdhLWcg3w_fiJ密切相关。也就是说,任何语言(不仅仅是R)中的浮点运算在处理等式、集合成员和在R控制台上呈现时(您看到的是对象实际内容的近似值)可能会产生看似反直觉的结果。 - r2evans
2个回答

1

若要以更精确的格式将数字转换为字符,可以使用format函数:

> format(5,nsmall = 1)
[1] "5.0"

1
没有冒犯之意,但这怎么回答问题了呢?楼主问的是为什么会发生这种情况。 - slava-kohut

1
我很想知道为什么as.character(5.0)返回5。
关键词是"returns"。你的意思是什么?请注意,在控制台中输入此命令将返回5:
> 5.0
[1] 5

对于计算目的,5和5.0是相同的。因此,您真正关心的可能是5的打印方式。因此,您需要使用joran的方法或类似sprintf的函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接