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