현재 가지고 있는 십진수 값에서 정수를 제거하려고 합니다.
현재 구문:
h=$(echo "scale=2; (($e/$g/$g))" | bc)
echo $h
다음 코드는 초를 분, 시간으로 변환하는 데 사용되지만 "21.15" 시간을 반환합니다.
나는 0.15를 유지하고 여기에 60을 곱하고 싶습니다(9분 남음). 그러면 결국 21시간 9분이 됩니다.
답변1
나머지 bc
연산자는%
expr % expr The result of the expression is the "remainder" and it is com‐ puted in the following way. To compute a%b, first a/b is com‐ puted to scale digits. That result is used to compute a-(a/b)*b to the scale of the maximum of scale+scale(b) and scale(a). If scale is set to zero and both expressions are integers this expression is the integer remainder function.
전임자.
$ echo '21.15 % 1' | bc
.15
$ echo '(21.15 % 1) * 60' | bc
9.00
답변2
bc
문서 에 따르면 :
표현/표현
표현식의 결과는 두 표현식의 몫입니다. 결과의 척도는 변수 척도의 값입니다.
따라서 scale=0
정수 나누기를 사용하십시오.
>bc <<<'scale=2; 8/3'
2.66
>bc <<<'scale=0; 8/3'
2
답변3
dc를 사용해 볼 수 있습니다.
echo '21.15 1%60*p' | dc -f -
9.00