우분투 리눅스에서는 bc를 사용하고 있습니다. 여기에는 99로 설정된 사전 정의된 상수 PI가 있습니다. bc가 PI를 3.14159가 아닌 99로 정의하는 이유는 무엇입니까?
답변1
에는 내장된 상수 π가 없습니다 bc
. 옵션 과 함께 호출되면 -l
일부 내장기능삼각 함수를 사용하여 π를 계산할 수 있게 됩니다.매뉴얼 페이지다음 예시를 포함하세요.
예
셸에서 다음 코드는 π 값을 셸 변수에 할당합니다
pi
.pi=$(echo "scale=10; 4*a(1)" | bc -l)
GNU bc에 대한 texinfo 문서(여기서는 버전 1.07.1)에 설명된 대로 입력 진수 변환의 결과를 평가하려고 PI
하면 어떤 일이 발생합니까?
...
bc
변수에 의해 지정된 현재 입력 기수를 사용하여 상수를 내부 십진수로 변환합니다.IBASE
.
눈치채다
...여러 자리 숫자의 경우
bc
모든 입력 숫자를 다음보다 크거나 같게 변경합니다.IBASE
값IBASE
-1. 이렇게 하면 숫자가ZZZ
항상 입력 베이스에서 가장 큰 3자리 숫자가 됩니다.
따라서 기본적으로 ibase=10
10진수가 아닌 숫자 쌍을 변환하면 10진수 99가 됩니다.
이전 버전의 GNU에는 bc
최대 ibase
16개가 있었고 [0-9A-F] 세트의 문자만 제공되었습니다. 이 경우 이 범위를 벗어나는 문자는 오류 조건을 발생시킵니다. 너는 이것을 볼 수 있다bc
명령 매뉴얼버전 1.06에는 위의 단락도 포함되어 있습니다.
답변2
bc
내부적으로 Pi 번호가 있는지는 확실하지 않지만 항상 다음과 같은 방법으로 계산할 수 있습니다.
4*a(1)
그 기능 a(x)
은 실제로아크탄젠트
답변3
아니요, 없습니다 (수학)상수 PI는 99로 정의됩니다.어떤 경우에도) bc
.
bc
대문자를 상수 값으로 해석하는 것이 일반적입니다 . (소문자는 변수 이름입니다.)
이는 POSIX에서도 오랫동안 지속되어 온 개념입니다.A
10진수 값을 나타냅니다.10
:
ibase 또는 obase에 bc 어휘 규칙 목록의 단일 숫자 값이 할당되면 해당 값은 16진수로 가정되어야 합니다. (예를 들어 ibase=A는 현재 ibase 값에 관계없이 기본 10으로 설정됩니다.)
이를 통해 해당 지점의 진수에 관계없이 입력 진수를 십진수 10으로 재설정할 수 있습니다. 즉, ibase=A
ibase는 항상 로 재설정됩니다 10
.
bc
사용된 버전 에 따라 다음 숫자는 특정 값을 가지거나, 값이 없거나, 오류를 생성하도록 정의 B
될 수 있습니다.Z
특히 GNU bc 버전 1.07의 경우하나의대문자는 최대 35자까지 가능합니다(IBASE 설정 여부에 관계없음).
$ echo $(bc <<<'A;B;C;D;E;F;G;H;I;Z')
10 11 12 13 14 15 16 17 18 35
이 아니라면더블,세 번및 기타 대문자의 경우 값은 으로 제한됩니다 ibase-1
.
$ echo $(bc <<<'AA;BB;GG;ZZ;AAA;ZZZ')
99 99 99 99 999 999
$ echo $(bc <<<'ibase=14;obase=ibase;AA;BB;GG;ZZ;AAA;ZZZ')
AA BB DD DD AAA DDD
수학 PI
수학 상수의 값PI(또는 일반적인 표기법π)는 다음 공식을 사용하여 계산할 수 있습니다.
$ bc -l <<<'scale=40; 4*a(1)'
3.1415926535897932384626433832795028841968
또는 변수를 설정합니다.
bc -l <<<'scale=40; pi=4*a(1); pi'
3.1415926535897932384626433832795028841968