Awk-arithmetic-functions

提供:Dev Guides
移動先:案内検索

AWK-算術関数

AWKには、次の組み込みの算術関数があります-

atan2(y、x)

ラジアン単位の(y/x)のアークタンジェントを返します。 次の例はこれを示しています-

[jerry]$ awk 'BEGIN {
   PI = 3.14159265
   x = -10
   y = 10
   result = atan2 (y,x) * 180/PI;

   printf "The arc tangent for (x=%f, y=%f) is %f degrees\n", x, y, result
}'

このコードを実行すると、次の結果が得られます-

出力

The arc tangent for (x=-10.000000, y=10.000000) is 135.000000 degrees

cos(expr)

この関数は、ラジアンで表される expr のコサインを返します。 次の例はこれを示しています-

[jerry]$ awk 'BEGIN {
   PI = 3.14159265
   param = 60
   result = cos(param * PI/180.0);

   printf "The cosine of %f degrees is %f.\n", param, result
}'

このコードを実行すると、次の結果が得られます-

出力

The cosine of 60.000000 degrees is 0.500000.

exp(expr)

この関数は、変数の指数値を見つけるために使用されます。

[jerry]$ awk 'BEGIN {
   param = 5
   result = exp(param);

   printf "The exponential value of %f is %f.\n", param, result
}'

このコードを実行すると、次の結果が得られます-

出力

The exponential value of 5.000000 is 148.413159.

int(expr)

この関数は、 expr を整数値に切り捨てます。 次の例はこれを示しています-

[jerry]$ awk 'BEGIN {
   param = 5.12345
   result = int(param)

   print "Truncated value =", result
}'

このコードを実行すると、次の結果が得られます-

Truncated value = 5

log(expr)

この関数は、変数の自然対数を計算します。

[jerry]$ awk 'BEGIN {
   param = 5.5
   result = log (param)

   printf "log(%f) = %f\n", param, result
}'

このコードを実行すると、次の結果が得られます-

出力

log(5.500000) = 1.704748

rand

この関数は、0 ⇐ N <1のような0から1までの乱数Nを返します。 たとえば、次の例では3つの乱数を生成します

[jerry]$ awk 'BEGIN {
   print "Random num1 =" , rand()
   print "Random num2 =" , rand()
   print "Random num3 =" , rand()
}'

このコードを実行すると、次の結果が得られます-

出力

Random num1 = 0.237788
Random num2 = 0.291066
Random num3 = 0.845814

sin(expr)

この関数は、ラジアンで表される expr のサインを返します。 次の例はこれを示しています-

[jerry]$ awk 'BEGIN {
   PI = 3.14159265
   param = 30.0
   result = sin(param * PI/180)

   printf "The sine of %f degrees is %f.\n", param, result
}'

このコードを実行すると、次の結果が得られます-

出力

The sine of 30.000000 degrees is 0.500000.

sqrt(expr)

この関数は、 expr の平方根を返します。

[jerry]$ awk 'BEGIN {
   param = 1024.0
   result = sqrt(param)

   printf "sqrt(%f) = %f\n", param, result
}'

このコードを実行すると、次の結果が得られます-

出力

sqrt(1024.000000) = 32.000000

srand([expr])

この関数は、シード値を使用して乱数を生成します。 乱数ジェネレーターの新しいシードとして expr を使用します。 exprがない場合、時刻をシード値として使用します。

[jerry]$ awk 'BEGIN {
   param = 10

   printf "srand() = %d\n", srand()
   printf "srand(%d) = %d\n", param, srand(param)
}'

このコードを実行すると、次の結果が得られます。

出力

srand() = 1
srand(10) = 1417959587