javascript - 我不明白数学结果 1+2*3*+4*5 = 121

标签 javascript c#

我使用 C# 中的代码

  public double CalculateExpression()
    {
        double result = -1;

        var javascriptLangualeType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC"));
        dynamic obj = Activator.CreateInstance(javascriptLangualeType, false);
        obj.Language = "javascript";

        try
        {
            result = obj.Eval(Expression);
            Result = result.ToString();
        }
        catch (Exception)
        {

            Result = "ERROR";
        }

        return result;
    }

当我想计算这个表达式时(里面是 '*' 和 '+' ):

var expresion = "1+2*3*+4*5";

我预计我会遇到任何其他类型的错误,但结果是 121。有人可以告诉我为什么这个表达式被认为是有效的吗?

我在 C# 脚本中尝试了这个表达式,并且得到了结果 121。

谢谢。

最佳答案

因为它正在这样做:

1 + (2 * 3 * (+4) * 5)

使用减号会更清楚,因为我们通常不使用 +4 来表示 4:

1+2*3*-4*5

扩展为

1 + (2 * 3 * (-4) * 5)

关于javascript - 我不明白数学结果 1+2*3*+4*5 = 121,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33469543/

相关文章:

c# - 将多个文件添加到 WebRequest

c# - 如何从 C# 中的 xml 中删除无效字符

c# - 如果声明的类型是动态对象,则声明的属性不会被序列化

javascript - 如何使用 jQuery 执行脚本直至其加载

javascript - 我们如何确定 Javascript 中字符串的引用相等性?

javascript - PayPal Checkout 客户端 : Can users change the order amount in JavaScript?

c# - 已添加项目。安装 Windows 服务时出错

c# - 简单的一般性误解

javascript - react /归零 : TypeError: Cannot read property 'target' of undefined

javascript - D3 JS - 包含 SVG 矩形的组在拖动时无法顺利转换