Bash Shell - 나눗셈에서 버림, 올림, 반올림 처리

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...
codechachaCopyright ©2019 codechacha