代码之家  ›  专栏  ›  技术社区  ›  Alek H.

我不能用pascal表达式写作

  •  -3
  • Alek H.  · 技术社区  · 10 年前

    我试着用PascaL(sin(x*g))^3-cos(g^2)写这个表达式,但我总是出错 我的代码在这里:

     z:=exp(ln(sin(x*g))*3)-cos(exp(ln(g)*2));
     Writeln('z=',z);
    

    z、 x,g为实数

    1 回复  |  直到 10 年前
        1
  •  0
  •   Penguino    10 年前

    您的代码有三个潜在问题。

    首先,如果sin函数有可能返回负值(或者g为负值),那么log函数将失败并出现错误。

    其次,Sqr(g),甚至g*g,比exp(ln(g)*2)更有效,更清晰。

    第三,使用幂函数比使用exp/ln方法更容易理解,可能更有效,并且在数值上可能更准确。

    因此,我将用以下内容替换您的代码:

     Temp := Sin(x*g);
     z := Sign(Temp)*Power(Abs(Temp),3) - cos(Sqr(g));