相关疑难解决方法(0)

评估一串简单的数学表达式

挑战

这是挑战(我自己的发明,但如果以前出现在网络的其他地方,我不会感到惊讶).

编写一个函数,该函数采用单个参数,该参数是简单数学表达式的字符串表示形式,并将其作为浮点值进行计算."简单表达"可以包括以下任何一种:正十进制数或负十进制数,+,-,*,/,(,).表达式使用(正常)中缀表示法.操作员应按其出现的顺序进行评估,即不像BODMAS中那样进行 评估,但当然应该正确观察括号.该函数应该为此表单的任何可能表达式返回正确的结果.但是,该函数不必处理格式错误的表达式(即语法错误的表达式).

表达的例子:

1 + 3 / -8                            = -0.5       (No BODMAS)
2*3*4*5+99                            = 219
4 * (9 - 4) / (2 * 6 - 2) + 8         = 10
1 + ((123 * 3 - 69) / 100)            = 4
2.45/8.5*9.27+(5*0.0023)              = 2.68...
Run Code Online (Sandbox Code Playgroud)

规则

我预计会有某种形式的"作弊"/狡猾,所以请让我预先反对它!通过作弊,我指的是eval在动态语言(如JavaScript或PHP)中使用或等效函数,或者同时编译和执行代码.(我认为我的"没有BODMAS"的规格几乎可以保证这一点.)除此之外,没有任何限制.我在这里预计会有一些Regex解决方案,但不仅仅是这样,我们会感到很高兴.

现在,我主要对C#/ .NET解决方案感兴趣,但是任何其他语言都是完全可以接受的(特别是F#和Python用于功能/混合方法).我还没有决定我是否会接受最短或最巧妙的解决方案(至少对于语言而言)作为答案,但我欢迎任何语言的任何形式的解决方案,除了我刚才禁止的!

我的解决方案

我现在在这里发布了我的C#解决方案(403个字符).更新: …

math parsing code-golf infix-notation text-parsing

76
推荐指数
21
解决办法
1万
查看次数

使用eval从字符串计算数学表达式

我想从字符串中计算数学表达式.我已经读过,解决方法是使用eval().但是当我尝试运行以下代码时:

<?php

$ma ="2+10";
$p = eval($ma);
print $p;

?>
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

解析错误:语法错误,意外的$ end在C:\ xampp\htdocs\eclipseWorkspaceWebDev\MandatoryHandinSite\tester.php(4):eval()'代码在第1行

有人知道这个问题的解决方案.

php math eval

21
推荐指数
4
解决办法
5万
查看次数

如何用PHP制作计算器?

我想使用PHP来计算简单的代数表达式,比如,8*(5+1)通过<input>普通用户通过标签输入(这意味着,正常的表示法:没有语法改变Multiply(8, Add(5, 1))).此外,它必须显示所有步骤,但这并不难.问题,现在,正在计算表达式的值.

注意:这是我到目前为止所想的,这是非常低效的,但它是一个附带的解决方案.只需在可能的情况下替换字符串:在我们的示例中,识别字符串5+1并将其替换为6.然后,再次循环,替换(6)6,再次循环,并替换8*648.例如,乘法代码应如下所示:

for ($a=1; $a < 1000; $a++) {
    for ($b=1; $b < 1000; $b++) {
        string_replace($a . '*' . $b, $a*$b, $string);
    }
}
Run Code Online (Sandbox Code Playgroud)

php

6
推荐指数
1
解决办法
4139
查看次数

如何使用保存在变量中的运算符符号执行操作

大家,这对你们大多数人来说都是一个简单的问题.但我很困惑如何使用保存在变量中的运算符符号执行操作.例.

$first=5;
$second=5;
$operator="+";

$result=$first.$operator.$second;

echo $result;
Run Code Online (Sandbox Code Playgroud)

但$ result将只打印5 + 5.我希望它执行操作.

我的想法是将所有操作放在if条件中 - > if($ operator =='+'){添加第一个和第二个操作数}.还有其他想法吗?

php

3
推荐指数
1
解决办法
331
查看次数

将字符串转换为数学方程

我只是想将包含方程的字符串转换为实际的 PHP 数学方程,这可以使用 PHP5+ 吗?如果是这样,如何?

以下是字符串可能是的一些示例:

$string = "37-0";
$string = "315+10";
$string = "25+50";
$string = "88-13";
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我只想将这些解析为正确的数学答案

php math

3
推荐指数
1
解决办法
6364
查看次数

如何将字符串中的数学表达式转换为整数

例如,我有一个声明:

$var = '2*2-3+8'; //variable type is string
Run Code Online (Sandbox Code Playgroud)

如何使它平等9

php math eval

0
推荐指数
1
解决办法
437
查看次数

标签 统计

php ×5

math ×4

eval ×2

code-golf ×1

infix-notation ×1

parsing ×1

text-parsing ×1