2

我确定其他人已经问过这个问题,但我的 Google foo 让我失望了,我找不到它。当我在这样的等式中多次划分时:

this.active[i].pos(last.pos()+(last.width()/2)+10+(this.active[i].width()/2));

/2)+10+(this.active[i].width()/ ”将在编辑器中显示正则表达式格式(全橙色),这让我发疯。:(

有没有办法可以更改我的设置来防止这种情况发生?我根本不使用正则表达式,因此完全在编辑器中禁用它的格式是可以接受的。

任何人都可以提供或指出我的答案吗?

如果您在 Google 上找到它,我将不胜感激学习您的搜索词。

谢谢你。:)

4

1 回答 1

3

当我在堆栈溢出时遇到这个问题时,我已经在网上搜索了大约 45 分钟,试图找到这个问题的解决方案。我几乎开始对其进行赏金,但我决定看看我是否能自己解决这个问题。

我想出了两种可能的解决方案,尽管它们都比我简单得多。

解决方案1:将公式分成两部分,可以存储在变量中,并在需要时相加。比如我正好在写一个计算表面积的公式,形成一个正则表达式,返回了错误的答案:

返回 [(this.base * this.height)/2] + [(this.perimeter * 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 都会得到相同的答案。然后我的代码如下所示:

返回 [(this.base * this.height) * 0.5] + [(this.perimeter * this.slant) * 0.5];

我对两者都进行了测试,并且两者都有效,但显然解决方案 2 更有效(代码更少)。

我唯一能想象需要使用解决方案 1 的情况是,如果您要除以一个非常长的数字或一个素数(除以 3 比乘以 0.33 得到的结果更准确)。

无论如何,我知道您几个月前发布了这个问题,并且可能想出了一个解决方案或继续前进,但我想我还是会发布这个答案,作为未来任何具有相同想法的问题的参考。

(此外,这是在 JavaScript 中,但我无法想象这么简单的东西在类似的语言中有什么不同)。

于 2013-08-11T06:07:35.493 回答