Я масштабирую набор чисел и хочу избежать получения нуля с плавающей запятой для суммы масштабированных чисел:
x <- c(-5, 1, 8)
y <- scale(x)
sum(y)
# [1] 1.249001e-16
Есть ли способ обойти это, чтобы свести сумму к нулю? Меня не волнует точность за пределами трех знаков после запятой.
y
входит в функцию, для которой требуетсяsum(y) == 0
. Нужно что-то, чтобы вывести меня за рамки этого утверждения if - person user3343467   schedule 19.03.2018round(sum(y), 3) == 0
в вашей функции? - person hpesoj626   schedule 19.03.2018y
, требует, чтобы сумма чисел, вычисленная с помощью арифметики с плавающей запятой, была точно равна нулю, то она не предназначена для работы с арифметикой с плавающей запятой и должна быть исправлена. Принуждение элементов y к нулю не является хорошим решением, так как это увеличит ошибку. - person Eric Postpischil   schedule 19.03.2018