제1장: The Missing Code Library -- 9. 임 의 정밀도 부동 소수점 계산기

2559 단어 linuxshellbash
스 크 립 트 를 작성 하 는 과정 에서 가장 많이 사용 되 는 것 은 아마도 $() 일 것 입 니 다.그것 은 여러 가지 기본 산술 연산 을 집행 할 수 있다.이 표현 식 은 매우 유용 합 니 다. 특히 계수 기 를 추가 할 때;또한 + - */% 연산 을 지원 하지만 모든 정수 와 소수 가 다 되 는 것 은 아 닙 니 다.예 를 들 어 아래 명령 은 0.5 가 아니 라 0 으로 되 돌아 갑 니 다.
echo $((1/2))

 
   그래서 계산 결과 가 더 높 은 정밀도 가 필요 할 때 이것 은 도전 을 받 아 들 였 다 는 것 을 의미한다.명령 행 아래 에 사용 하기 좋 은 계산 프로그램 이 몇 개 없다.예 를 들 어 bc 를 제외 하고 유 닉 스 사용자 가 배 우 는 이상 한 프로그램 이 별로 없다.bc 프로그램 은 자신 을 임의의 정밀도 의 계산기 로 생각 합 니 다. 애매 한 오류 정 보 를 사용 하여 유 닉 스 의 시작 으로 거 슬러 올 라 가 고 힌트 가 전혀 없습니다. 그리고 이 를 사용 하면 무엇 을 하고 있 는 지 잘 알 고 있다 고 가정 합 니 다.하지만 이 모든 것 은 상관 없어, 우 리 는 해결 할 수 있어.
코드:
#!/bin/sh
 
 # scriptbc.sh --        'bc'   
 
 if [ $1 = "-p" ]; then
     precision=$2
     shift 2
 else
     precision=2     #        2 
 fi 
 
 bc -q << EOF
 scale=$precision
 $*
 quit
 EOF
 
 exit 0

스 크 립 트 작업 방법: 이 스 크 립 트 는 here document 방법 을 사 용 했 습 니 다. 이 방법 은 매우 유용 합 니 다.태그 기호 << 스 크 립 트 에 추가 입력 을 포함 할 수 있 습 니 다. 이 후속 입력 은 입력 흐름 에서 직접 얻 은 것 과 같 습 니 다. 이 예 에서 간단 한 메커니즘 으로 bc 프로그램 으로 명령 을 처리 할 수 있 습 니 다.이것 역시 우리 가 처음으로 논술 한 것 이다. 하나의 스 크 립 트 에서 명령 의 매개 변 수 를 어떻게 이용 하여 명령 의 유연성 을 강화 하 는 지.스 크 립 트 를 호출 할 때 - p 옵션 을 사용 하면 원 하 는 정 도 를 제공 할 수 있 습 니 다.제시 되 지 않 으 면 프로그램 은 기본적으로 scale = 2 를 사용 합 니 다.
bc 를 사용 할 때 길이 (length) 와 정밀도 (scale) 의 차 이 를 이해 하 는 것 이 특히 중요 합 니 다.bc 에 있어 length 는 숫자 중의 총 갯 수 이 고 scale 은 소수점 뒤의 숫자 갯 수 입 니 다.따라서 10.25 의 length 는 4 이 고 scale 은 2 이 며 3.14159 의 length 는 6 이 고 scale 은 5 이다.
기본 적 인 상황 에서 bc 의 length 는 변수 이지 만 scale 은 0 이기 때문에 어떠한 설정 도 추가 하지 않 으 면 bc 의 작업 방식 은 $() 와 똑 같 습 니 다.다행히도 bc 에 scale 을 설정 하면 숨겨 진 힘 이 많다 는 것 을 알 게 될 것 입 니 다. 예 를 들 어:
bc      #      bc
bc 1.06   #   bc  
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.    #     
This is free software with ABSOLUTELY NO WARRANTY.              #    
For details type `warranty'.                           #    
scale=10       #    
(2002-1962)*365   #       
         #       
/7       #        
.7142857142   #       
quit         #   bc  

명령 행 에서 bc 에 접근 할 수 있 도록 패키지 스 크 립 트 는 Copyright 내용 의 출력 을 금지 해 야 합 니 다.이들 의 입력 이 터미널 (표준 입력) 이 아니 더 라 도 대부분의 bc 버 전 은 머리 Copyright 의 출력 을 금지 해 야 한 다 는 것 을 알 고 있다.패 키 징 기 는 scale 을 명확 한 값 으로 설정 하여 bc 프로그램 에 표현 식 을 전달 한 다음 quit 명령 으로 종료 합 니 다.
스 크 립 트 실행: 이 스 크 립 트 를 실행 하려 면 스 크 립 트 프로그램 에 수학 표현 식 을 매개 변수 로 하면 됩 니 다.
실행 결과:
scriptbc.sh 14600/7
2085.71
scriptbc.sh -p 10 14600/7   
2085.7142857142

좋은 웹페이지 즐겨찾기