我正在尝试从当前拥有的十进制值中删除整数。
当前语法:
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