粘贴功能的奇怪数字行为

时间:2016-02-02 23:37:49

标签: r paste

任何人都可以解释下面转载的奇怪的十进制行为吗?以及如何避免它?我想使用四舍五入,但我看不出我应该需要什么。

x <- 200.10 
y <- 200.96
paste("Difference", x - y, sep = ":")
# [1] "Difference:-0.860000000000014"
# But not here!
200.10-200.96
# -0.86

2 个答案:

答案 0 :(得分:1)

没有什么奇怪的事情发生。两种情况下的精度都是相同的,只是印刷方式不同。

sprintf("Difference: %.2f", x - y) 
# prints -0.86 as in your last output

options(digits=15);  200.10-200.96 
# prints -0.860000000000014 as in your first output

两种情况下的精度都由类型决定(在这种情况下为double)。见https://stat.ethz.ch/R-manual/R-devel/library/base/html/double.htmlhttps://stat.ethz.ch/R-manual/R-devel/library/base/html/zMachine.html

答案 1 :(得分:0)

由于用于精度的位数,处理浮点值时会发生这种情况。您可以通过确保您的值具有特定的小数位数来避免此问题,或者您可以使用整数。