R使用eval和parse text时,有效位数会导致意外的不平等结果

R使用eval和parse text时,有效位数会导致意外的不平等结果,r,text,eval,paste,significant-digits,R,Text,Eval,Paste,Significant Digits,我正在处理与我的工作()相关的购物车类树的终端节点分配相关的布尔规则 我注意到在使用文本的eval和parse计算字符串不等式时出现了问题。这个问题与R如何计算数字的内部表示有关 下面是一个涉及数字pi的示例。我想检查向量(我称之为x)是否小于或等于pi >圆周率 [1]3.141593 rule=paste0(“x您可以通过pi名称或函数来代替,以防止pi被字符串化(这是您的第一个问题) 规则浮点比较不准确。阅读使用paste转换为字符并使用eval转换回字符的整个方法非常难看。为什么不直接

我正在处理与我的工作()相关的购物车类树的终端节点分配相关的布尔规则

我注意到在使用文本的eval和parse计算字符串不等式时出现了问题。这个问题与R如何计算数字的内部表示有关

下面是一个涉及数字pi的示例。我想检查向量(我称之为x)是否小于或等于pi

>圆周率 [1]3.141593

rule=paste0(“x您可以通过pi名称或函数来代替,以防止
pi
被字符串化(这是您的第一个问题)



规则浮点比较不准确。阅读使用paste转换为字符并使用eval转换回字符的整个方法非常难看。为什么不直接对整数进行四舍五入然后进行比较?这是不可能的,因为我的工作性质。我需要处理非常复杂的布尔运算符字符串。添加small tolerance并没有让它变得比现在更丑陋。我愿意这么做。我知道有一个浮动问题(请阅读整个问题)。我想知道的是,在我自动化这个过程时,如何避免这种情况。请参阅我关于通过函数防止pi过早变得严格化(和破坏)的建议。感谢帮助

> print( pi, digits=20 )
[1] 3.141592653589793116
> print( eval(parse(text=pi)), digits=20 )
[1] 3.1415926535897900074