Linux bc는 PI를 99로 정의합니다.

Linux bc는 PI를 99로 정의합니다.

우분투 리눅스에서는 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모든 입력 숫자를 다음보다 크거나 같게 변경합니다.IBASEIBASE-1. 이렇게 하면 숫자가 ZZZ항상 입력 베이스에서 가장 큰 3자리 숫자가 됩니다.

따라서 기본적으로 ibase=1010진수가 아닌 숫자 쌍을 변환하면 10진수 99가 됩니다.

이전 버전의 GNU에는 bc최대 ibase16개가 있었고 [0-9A-F] 세트의 문자만 제공되었습니다. 이 경우 이 범위를 벗어나는 문자는 오류 조건을 발생시킵니다. 너는 이것을 볼 수 있다bc 명령 매뉴얼버전 1.06에는 위의 단락도 포함되어 있습니다.

답변2

bc내부적으로 Pi 번호가 있는지는 확실하지 않지만 항상 다음과 같은 방법으로 계산할 수 있습니다.

4*a(1)

그 기능 a(x)은 실제로아크탄젠트

답변3

아니요, 없습니다 (수학)상수 PI는 99로 정의됩니다.어떤 경우에도) bc.

bc대문자를 상수 값으로 해석하는 것이 일반적입니다 . (소문자는 변수 이름입니다.)

이는 POSIX에서도 오랫동안 지속되어 온 개념입니다.A10진수 값을 나타냅니다.10:

ibase 또는 obase에 bc 어휘 규칙 목록의 단일 숫자 값이 할당되면 해당 값은 16진수로 가정되어야 합니다. (예를 들어 ibase=A는 현재 ibase 값에 관계없이 기본 10으로 설정됩니다.)

이를 통해 해당 지점의 진수에 관계없이 입력 진수를 십진수 10으로 재설정할 수 있습니다. 즉, ibase=Aibase는 항상 로 재설정됩니다 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

관련 정보