首页 > 解决方案 > 0.5<0.5 在 R 中返回 TRUE?

问题描述

我在 R 编程中遇到了一件奇怪的事情。当我模拟一个序列,想判断元素是否小于0.5时,

t=(1:1440)/1440
x=(t[720]-t[648])/0.1
x
#output:[1] 0.5
x<1/2
#output:[1] TRUE
x=0.5
x<1/2
#output:[1] FALSE

这两个结果完全相反,显然第二个结果就是我想要的。有谁能够帮助我?

标签: r

解决方案


浮点运算在 R 中并不精确,您期望在数值上精确到 0.5 的值实际上可能略多(或更少)。一种可能的解决方法是使用舍入:

t <- (1:1440)/1440
x <- (t[720]-t[648]) / 0.1
round(x, 1) < 0.5

推荐阅读