对于相同的值,R中的舍入不一致



我在R中遇到了一些非常奇怪的行为,我一辈子都无法弄清楚

x <- c(1, 1, 6, 1)
y <- c(0, 5)
z <- c(4, 0, 0, 2, 0, 5)
x90 <- quantile(x, 0.9)
y90 <- quantile(y, 0.9)
z90 <- quantile(z, 0.9)
c(x90, y90, z90)
round(c(x90, y90, z90), 0)

输出为:

> c(x90, y90, z90)
90% 90% 90% 
4.5 4.5 4.5 
> round(c(x90, y90, z90), 0)
90% 90% 90% 
5   4   4  

有人能告诉我为什么4.5有时会变成4,但并不总是这样吗?

一些系统信息:

  • R版本:3.6.2(2019-12-12(
  • RStudio版本:1.1.456
  • 平台:i386-w64-mingw32/i386(32位(

提前感谢

默认情况下,R只显示7位精度;x90y90z90都等于4.5到7个有效数字,但打印更多的有效数字表明x90略大于4.5(因为浮点数学不精确(。

print(c(x90,y90,z90),digits=20)
90%                   90%                   90% 
4.5000000000000008882 4.5000000000000000000 4.5000000000000000000 

为了更深入地理解,你必须深入研究分位数计算的细节,但大多数人(包括我(通常会把它放在";浮点数学是不精确的,接受它吧;。

最新更新