Comment detail

π (Nested Flatten)
前半は半径rの1/4円の面積aを求めています。
後半では面積aを単純に4倍し、r*rで割ってpiを求めたかったのですが、
bashでは小数を持てないので、小数部分を10倍しながら表示しています。

$ ./pi.sh 100
3.1416
$ ./pi.sh 241
3.1400974
$ ./pi.sh 1000
3.141548
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#/bin/bash

r="$1"
a=0

for ((x=1;x<=r;x++)) {
    for ((y=0;y<r;y++)) {
        if ((x*x+y*y<=r*r));then
            a=$((a+1))
        else break
        fi
    }
}

z=$((a*4));m=$((z/(r*r)))
echo -n $m
z=$((z-m*r*r))
if ((z));then
    echo -n .
fi
for ((i=1;i<8&&z>0;i++)) {
    n=$((z*10/(r*r)))
    z=$((z*10-n*r*r))
    echo -n $n
}
echo

Index

Feed

Other

Link

Pathtraq

loading...