我肯定有人问过这个问题,但我的谷歌foo让我失望了,我找不到它。当我在这样的等式中划分不止一次时:
this.active[i].pos(last.pos()+(last.width()/2)+10+(this.active[i].width()/2));
">/2)+10+(this.active[i].width()/"将在编辑器中出现正则表达式格式(全部为橙色),这让我抓狂。:(
有什么方法可以更改我的设置来防止这种情况发生吗?我根本不使用正则表达式,所以在编辑器中完全禁用它的格式是可以接受的。
有人能给我一个答案吗?
如果你在谷歌上找到它,我会很感激学习你的搜索词。
谢谢。:)
我在网上搜索了大约45分钟,试图找到这个问题的解决方案,这时我在这里遇到了这个关于堆栈溢出的问题。我几乎开始悬赏,但我决定看看是否能自己解决。
我想出了两种可能的解决方案,这两种方案都比我想象的要简单得多
解决方案1:将公式分成两个部分,这些部分可以存储在变量中,并在需要时添加在一起。例如,我碰巧在写一个表面积计算公式,它形成了一个正则表达式,并返回了错误的答案:
return[(this.base*this.height)/2]+[(this.cerimeter*this.slant)/2];
我在+
处拆分公式,并将它们存储在变量中:
var a = (this.base * this.height)/2;
var b = (this.perimeter * this.slant)/2;
return a + b
这个解决方案效果很好。但后来我开始思考,必须有一个我一直在寻找的更简单的解决方案,这让我想到了:
解决方案2:除以2等于乘以0.5(duh!)。在我的情况下——几乎在任何情况下——除以2乘以0.5都会得到相同的答案。我的代码看起来是这样的:
return[(this.base*this.height)*0.5]+[(this.cerimeter*this.slant)*0.5];
我测试了两者,并且两者都能工作,尽管显然解决方案2更高效(代码更少)。
我唯一能想到的需要使用解1的时候是,如果你除以一个很长的数字或素数(除以3会得到比乘以0.33更准确的结果)
不管怎样,我知道你几个月前就发布了这个问题,可能是想出了解决方案,或者继续前进,但我想我无论如何都会发布这个答案,作为未来任何有同样想法的问题的参考。
(此外,这是用JavaScript编写的,但我无法想象在类似的语言中如此简单的东西会有什么不同)。