Bash数学奇数(浮点除法)

Bash数学奇数(浮点除法),bash,math,bc,expr,Bash,Math,Bc,Expr,所以我在bash/bc数学方面遇到了一些问题 在通过rclone将备份文件移动到我的gdrive进行备份后,我正在尝试打印备份文件的大小。因此,我通过一个rclone ls语句和awk print$1获得文件大小,这非常有效 在我的具体示例中,我得到值1993211(字节) 所以在我的打印代码中,我尝试将它除以1048576,得到mb。这应该给我1.9MB 但是,, $expr 1993211/1048576|bc-l 打印1 我尝试了列出的各种其他数学选项(包括通过python/node),我

所以我在bash/bc数学方面遇到了一些问题

在通过rclone将备份文件移动到我的gdrive进行备份后,我正在尝试打印备份文件的大小。因此,我通过一个rclone ls语句和awk print$1获得文件大小,这非常有效

在我的具体示例中,我得到值1993211(字节)

所以在我的打印代码中,我尝试将它除以1048576,得到mb。这应该给我1.9MB

但是,,
$expr 1993211/1048576|bc-l

打印
1

我尝试了列出的各种其他数学选项(包括通过python/node),我总是得到1或1.0。这怎么可能

计算应为
1993211/1048576=1.90087413788


知道这是怎么回事吗?

那是因为它做整数除法。 请务必获取可以运行的浮点除法:

bc -l <<< '1993211 / 1048576'

bc-l那是因为它进行整数除法。
请务必获取可以运行的浮点除法:

bc -l <<< '1993211 / 1048576'

bc-l在命令
expr 1993211/1048576 | bc-l
中,
expr
使用整数除法将1993211除以1048576(
expr
知道该怎么做),得到结果“1”,并打印它
bc-l
接收“1”作为输入,由于没有指定任何操作(
expr
已经这样做了),所以它只打印它

您需要的是将表达式“1993211/1048576”作为输入直接传递到
bc-l

$ echo "1993211 / 1048576" | bc -l
1.90087413787841796875

在命令
expr 1993211/1048576 | bc-l
中,
expr
使用整数除法将1993211除以1048576(
expr
知道如何做),得到结果“1”,并打印它
bc-l
接收“1”作为输入,由于没有指定任何操作(
expr
已经这样做了),所以它只打印它

您需要的是将表达式“1993211/1048576”作为输入直接传递到
bc-l

$ echo "1993211 / 1048576" | bc -l
1.90087413787841796875
这个问题可能有用这个问题可能有用