답변:
dc
매우 오래된 도구이며보다 약간 오래된 도구 bc
입니다. Wikipedia 페이지 를 인용하려면 :
C 프로그래밍 언어의 발명을 앞두고 가장 오래된 유닉스 유틸리티 중 하나입니다. 그 빈티지의 다른 유틸리티와 마찬가지로 강력한 기능 세트가 있지만 매우 간결한 구문이 있습니다.
구문은 역 광택 표기법으로, 기본적으로 인수 (예 : 숫자)가 연산자 뒤에옵니다. dc
사용법 의 기본 예 는 다음과 같습니다.
echo '3 4 * p' | dc
어디는 p
계산 결과를 인쇄하는 데 필요합니다. bc
반면에 친숙한 접두사 표기법을 사용하므로보다 직관적입니다. bc
사용 예는 다음과 같습니다 .
echo '3 * 4' | bc
bc
POSIX에 의해 표준화되어 있으므로 아마도 둘 중 더 이식성이 좋을 것입니다 (적어도 최신 시스템에서는). 수동 계산기 작업을하는 경우 확실히 선택입니다 (당신이 다소 마조히스트가 아닌 한). dc
역 광택 표기법이 유용한 경우가 있습니다. 총계로 만들려는 일련의 숫자를 출력하는 프로그램이 있다고 상상해보십시오.
23
7
90
74
29
스트림에 dc
a 만 추가하면되므로 다음과 같이하는 것이 매우 간단합니다 (적어도 각 연산자가 두 개 이상의 숫자를 사용할 수있는 최신 구현에서는) +p
.
{ gen_nums; echo +p } | dc
그러나 각 숫자 사이에 숫자 bc
를 넣고 모든 줄이 같은 줄에 있어야 할뿐만 아니라 끝에 줄 바꿈이 있어야하기 때문에 더 복잡 합니다.+
{ gen_nums | sed '$ !s/$/+/' | tr -d '\n'; echo; } | bc
gen_nums
사용하여 예제를 매우 복잡하게 만들었습니다 bc
. : 그것은 단순화 할 수gen_nums | paste -sd+ | bc
bc
컴파일 만 프런트 엔드 도구였다 bc
의 표기법으로 표기를 dc
하고에 있음을 파이프 dc
결과를 얻을 수는. FreeBSD에는 여전히 표기법 echo '3 * 4'로 컴파일 할 수 있는 -c
플래그 가 있습니다. | bc`는 입니다. 참고 항목 linux.die.net/man/1/bc 및 freebsd.org/cgi/man.cgi?query=bc&sektion=1bc
dc
. For example
echo '3 * 4' | bc -c | dc
dc
당신은 무엇을 사용하고 있습니까? Ubuntu 14.04 및 OS X에서 +
작업자는 항상 스택에서 정확히 두 값을 처리합니다.
bc -c
에서는 이상하고 다른 것을합니다 (그리고 -c
플래그는 문서화되지 않았습니다 ). 에 파이핑하려고 dc
하면 많은 오류가 발생합니다 (파이핑하지 않은 출력 dc
은 매우 암호입니다 @iK3:K4:*W@r\n@i
).
이 둘의 기본적인 차이점 dc
은 리버스 폴란드어 표기법 을 사용 한다는 것 입니다. 출력을 생성하기 위해 명시적인 명령이 필요합니다.
bc
다음과 같이 말하면 두 개의 정수를 추가 할 수 있습니다 .
bc <<< "2+4"
그리고 그것은 6
스스로 라인을 생산할 것입니다. 그러나 dc
다음과 같이 말해야합니다.
dc <<< "2 4 +p"
또한, 사용하는 재미 물건을 할 수있는 dc
예를 들어, 내 대답을 참조하십시오 여기에 생산
Hello World!
사용하여 dc
.
dc <<< "8 9 * P101P108P108P111P4 8 * P81 6 + P111P114P108P100P33P"
dc
계산기이지만 bc
실제 언어입니다. 해당 매뉴얼 페이지를 참조하십시오.
기원전dc는 무제한 정밀 산술을 지원하는 리버스 폴리쉬 데스크 계산기입니다. 또한 매크로를 정의하고 호출 할 수 있습니다. 일반적으로 dc는 표준 입력에서 읽습니다. 명령 인수가 제공되면 파일 이름이며 dc는 표준 입력에서 읽기 전에 파일의 내용을 읽고 실행합니다. 모든 일반 출력은 표준 출력입니다. 모든 오류 출력은 표준 오류입니다.
bc는 문장의 대화식 실행으로 임의의 정밀도 숫자를 지원하는 언어입니다. 구문은 C 프로그래밍 언어와 유사합니다. 표준 수학 라이브러리는 명령 행 옵션으로 제공됩니다. 요청 된 경우 수학 라이브러리는 파일을 처리하기 전에 정의됩니다. bc는 명령 행에 나열된 모든 파일의 코드를 나열된 순서대로 처리하여 시작합니다. 모든 파일이 처리 된 후 bc는 표준 입력에서 읽습니다. 모든 코드는 읽을 때 실행됩니다. 파일에 프로세서를 중지하는 명령이 포함되어 있으면 bc는 표준 입력에서 읽지 않습니다.
그것은 당신이 궁극적으로 수학적으로하고 싶은 것에 달려 있습니다. 을 사용하여 일부 작업을 수행 할 수 없습니다 dc
. 몇 가지 다른 명령 줄 계산기 도구 외에도 몇 년 동안 사용했습니다. 몇 가지 추가 예제는 " 명령 행 표현식 솔버? "를 참조하십시오 .
dc
난 항상 HP에게 역 폴란드 표기법 계산기를 사용했습니다 역 폴란드어 표기법 계산기되고 이후 실제로 사용하는 것을 선호 dc
로 bc
하지만 그들은 당신이 복잡한 수학적 계산을 수행 할 필요가 둘 다 아직 사용 언제있어 말할 것입니다. 나는 종종 그것들을 사용하여 숫자 10 / b 10을 16 및 2로 변환합니다.
dc
또한 언어 라고 주장한다 . 예 : codegolf.stackexchange.com/a/47921/11259
나의 겸손한 의견과 가능한 한 적은 단어로 GNU dc는 세 가지면에서 GNU bc와 다릅니다.
1) bc의 수학 라이브러리가 걱정스럽지 않은 경우, 기초 산술을 할 때 가능한 한 많은 키 입력 (1 월 Łukasiewicz의 말 : 괄호가없는 표기법)을 저장하여 필수 사항에 집중하고 산만하지 않도록하십시오.
2) Microsoft Windows 7의 명령 행에서 GNU dc는 GNU bc보다 적은 메모리 (~ 320K)를 소비합니다 (~ 360K).
3) GNU bc보다 GNU dc에서 세분화 된 제어, 예를 들어 스택 및 레지스터 명령은 GNU bc에 없습니다.
둘 다에 대한 버전 1.07.1 win32는 https://embedeo.org/ws/command_line/bc_dc_calculator_windows/에 있습니다.
expr
명령 줄과 스크립트에서 간단한 계산을 위해 매우 자주 사용 합니다.