Bc

丟棄整數並保留浮點數

  • November 7, 2019

我正在嘗試從我目前擁有的十進制值中刪除一個整數。

目前語法:

h=$(echo "scale=2; (($e/$g/$g))" | bc) 
echo $h 

以下用於將秒轉換為分鐘,然後是小時,但它返回“21.15”小時。

我想保留 0.15 並將其乘以 60(留給我 9 分鐘)——最後是 21 小時 9 分鐘。

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

根據bc文件:

表達式 / 表達式

表達式的結果是兩個表達式的商。結果的比例是變數比例的值。

所以使用scale=0整數除法:

>bc <<<'scale=2; 8/3'                                                                 
2.66                                                                                             

>bc <<<'scale=0; 8/3'
2

引用自:https://unix.stackexchange.com/questions/550930