计算R中两个数字的小数点后同意的位数

时间:2018-03-12 18:20:26

标签: r compare decimal

我希望R计算两个数字之间相同的位数,并返回小数点后相同的位数。例如:

a <- 0.1234567890
b <- 0.1234567891

输出:

9

9位数字相同。

谢谢!

2 个答案:

答案 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.