Bash 쉘 스크립트는 정수만 취급하기 때문에, 정수를 나눴을 때 소수점 이하는 버려집니다.
나눗셈 결과에 대해서 올림 또는 반올림 처리를 하고 싶을 때가 있는데요, 소수점 이하의 실수에 대해서 버림, 올림, 반올림 처리하는 방법을 소개합니다.
1. 버림(Floor) : 소수점 이하 실수 버림
나눗셈 연산 중 소수점 이하 실수를 버리면, 아래와 같이 계산됩니다.
- 2 / 2 = 1
- 5 / 2 = 2
- 5 / 3 = 1
기본적으로 쉘은 소수점 이하 실수를 버리기 때문에, 아래와 같이 정수를 나누시면 됩니다.
#!/bin/bash
a=$(( 2 / 2 ))
b=$(( 5 / 2 ))
c=$(( 5 / 3 ))
echo "a=${a}"
echo "b=${b}"
echo "c=${c}"
Output:
$ bash example.sh
a=1
b=2
c=1
2. 올림(Ceiling) : 소수점 이하 실수 올림
나눗셈 연산 중 소수점 이하 실수를 올림하면, 아래와 같이 계산됩니다.
- 2 / 2 = 1
- 5 / 2 = 3
- 5 / 3 = 2
쉘에서 A와 B의 나눗셈 결과를 올림하려면, 수학적인 트릭을 사용하여 A / B = (A + B - 1) / B
로 연산하면 됩니다.
아래와 같이 함수로 만들어 사용할 수 있습니다.
#!/bin/bash
ceiling() {
result=$(( ($1 + $2 - 1) / $2 ))
echo $result
}
a=$(ceiling 2 2)
b=$(ceiling 5 2)
c=$(ceiling 5 3)
echo "a=${a}"
echo "b=${b}"
echo "c=${c}"
Output:
$ bash example.sh
a=1
b=3
c=2
3. 반올림(Half up) : 소수점 이하 실수 반올림
나눗셈 연산 중 소수점 이하 실수를 올림하면, 아래와 같이 계산됩니다.
- 2 / 2 = 1
- 5 / 2 = 3
- 4 / 3 = 1
쉘에서 A와 B의 나눗셈 결과를 반올림하려면, 수학적인 트릭을 사용하여 A / B = (A + (B / 2)) / B
로 연산하면 됩니다.
아래와 같이 함수로 만들어 사용할 수 있습니다.
#!/bin/bash
halfUp() {
result=$(( ($1 + ($2 / 2)) / $2 ))
echo $result
}
a=$(halfUp 2 2)
b=$(halfUp 5 2)
c=$(halfUp 4 3)
echo "a=${a}"
echo "b=${b}"
echo "c=${c}"
Output:
$ bash example.sh
a=1
b=3
c=1
Loading script...
Related Posts
- Bash Shell - 문자열에서 마지막 문자 N개 제거
- Bash Shell - 문자열에서 첫번째 문자 N개 제거
- Bash Shell - 실행 시간 측정 방법
- Bash Shell - 나눗셈에서 버림, 올림, 반올림 처리
- Bash Shell - 숫자가 양수인지 음수인지 확인하는 방법
- Bash Shell - 자신의 스크립트 파일 이름 가져오기
- Bash Shell - 문자열 출력 방법(echo, printf)
- Bash Shell - seq 명령어로 반복문 구현 및 예제
- Bash Shell - File 테스트 연산자
- Bash Shell - 무한 루프 (Infinite loop)
- Bash Shell - 숫자 비교 연산자
- Bash Shell - 문자열 비교 연산자
- Bash Shell - 대문자, 소문자로 변환 (Uppercase, Lowercase)
- Bash Shell - 스트립트를 root로 실행했는지 확인
- Bash Shell - 명령어 실행 결과를 변수에 저장
- Bash Shell - select로 선택 메뉴 구현
- Bash Shell - 변수가 정의되었는지 확인하는 방법
- Bash Shell - sleep 함수, 특정 시간 멈추기
- Bash Shell - 파일이 존재하는지 확인
- Bash Shell - 문자열 자르기 (substring, split)
- Bash Shell - 날짜, 시간 가져오기
- Bash Shell - Case 조건문
- Bash Shell - 파일 읽는 방법
- Bash Shell - 사용자로부터 입력 받기
- Bash Shell - 문자열을 연결하는 방법
- Bash Shell - 파일 생성 및 문자열 추가
- Bash Shell - 숫자 변수 증가/감소 시키기
- Bash Shell - 배열 할당, 길이, 객체 포함 여부 확인
- Bash Shell - 문자열 비교, 문자열 포함 여부 확인
- Bash Shell - 변수 선언, 할당
- Bash Shell - 조건문(if-else)
- Bash Shell - 숫자 연산 (더하기, 빼기, 곱하기, 나누기)
- Bash Shell - 반복문(for, while, until loop)
- Bash Shell - Command Line으로 전달된 인자 받기
- Bash Shell - 함수(Function)