R 不完全为零的行的和,当它应该为零时

R 不完全为零的行的和,当它应该为零时,r,R,我在做一个简单的行和,两列给我0(这是它应该给出的数字),但最后一列给了一个ε,但不是0本身 # generate the row values that their sumation should give zero. d<-0.8 c<-1-d a<-0.5 b<-0.5 e<-0.2 f<-1-e Perc<-c(-1, a,b,c,-1,d,e,f,-1) # Put them in a 3x3 matrix div<-matrix(n

我在做一个简单的行和,两列给我0(这是它应该给出的数字),但最后一列给了一个ε,但不是0本身

# generate the row values that their sumation should give zero.
d<-0.8
c<-1-d
a<-0.5
b<-0.5
e<-0.2
f<-1-e

Perc<-c(-1, a,b,c,-1,d,e,f,-1)

# Put them in a 3x3 matrix
div<-matrix(ncol = 3, byrow = TRUE,Perc)

# Do the row sum
rowSums(div)

# RESULT
[1] 0.000000e+00 0.000000e+00 5.551115e-17

rowSums(div)[3]==0
[1] FALSE
#生成其总和应为零的行值。

这是因为机器不能准确地存储十进制数。有些数字可能会有一个小错误

这里的修复方法是使用
all.equal
函数。比较两个数字时,会考虑机器的公差水平

all.equal(sum(div[3, ]), 0) 
真的