丢弃整数并保留浮点

丢弃整数并保留浮点

我正在尝试从当前拥有的十进制值中删除整数。

当前语法:

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

相关内容