我希望 R 计算两个数字之间相同的位数,并返回小数点后相同的位数。例如:
a <- 0.1234567890
b <- 0.1234567891
输出:
9
9 位数字相同。
谢谢!
floor(-log10(abs(a-b)))
怎么样?
请注意,任何这样的计算总是存在浮点错误问题的风险 - 请参阅下面 John Paul 指出的示例。
这是另一个(基于字符串的)答案,不应该受到任何浮点比较问题的困扰......
sum(sapply(1:20,function(i) grepl(substr(b,1,i),a)))-2
这将比较长度为 1 到 20 的所有b
(强制字符)的初始子字符串(您可以扩展它),确定它们是否包含在a
中,返回匹配数(即包含在a
中的最长子字符串的长度b
)并减去 2 以允许初始0.