我是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]).
1条答案
按热度按时间t98cgbkg1#
我认为在计算
Dem
的sqrt
时,应该使用Num * Num
而不是Num * 2
。正如错误明确指出的那样...
***参数1:在此函数的域之外
当执行
math:sqrt(1 - (Num * 2))
时,很明显Num * 2
变得比1
大,导致负参数馈入math:sqrt
,从而导致断裂。说明:带负参数的
sqrt
WYSIWYG
***=〉***WHAT YOU SHOW IS WHAT YOU GET