정수를 버리고 부동 소수점을 유지합니다.

정수를 버리고 부동 소수점을 유지합니다.

현재 가지고 있는 십진수 값에서 정수를 제거하려고 합니다.

현재 구문:

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

관련 정보