erlang 切缐刮缐

kqlmhetl  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(174)

我是Erlang的新手,我使用Ubuntu命令行运行程序,使用gedit编辑/编写代码。
我尝试着编写正切我的划痕,而不是使用内置的数学类。
我收到以下错误,不确定需要更改哪些内容。

错误

** exception error: an error occurred when evaluating an arithmetic expression
     in function  math:sqrt/1
        called as math:sqrt(-0.07926409746793839)
        *** argument 1: is outside the domain for this function
     in call from extra:double/1 (extra.erl, line 11)

代码

-module(extra).

-export([double/1]).

-import(io,[fwrite/1]).

% I am a comment.

double(N) -> 
    Num = math:sin(N),
    Dem = math:sqrt(1 - (Num * 2)),
    Tan = Num / Dem,
    io:fwrite("~w",[Tan]).
t98cgbkg

t98cgbkg1#

我认为在计算Demsqrt时,应该使用Num * Num而不是Num * 2

double(N) -> 
    Num = math:sin(N),
    Dem = math:sqrt(1 - (Num * Num)),
    Tan = Num / Dem,
    io:fwrite("~w~n",[Tan]).

正如错误明确指出的那样...

***参数1:在此函数的域之外

当执行math:sqrt(1 - (Num * 2))时,很明显Num * 2变得比1大,导致负参数馈入math:sqrt,从而导致断裂。

说明:带负参数的sqrt

> math:sqrt(-1).
math:sqrt(-1).
** exception error: an error occurred when evaluating an arithmetic expression
     in function  math:sqrt/1
        called as math:sqrt(-1)
        *** argument 1: is outside the domain for this function

WYSIWYG***=〉***WHAT YOU SHOW IS WHAT YOU GET

相关问题