Bash 数学奇数(浮点除法)

  • 本文关键字:除法 Bash bash math bc expr
  • 更新时间 :
  • 英文 :


所以我在这里遇到了一些麻烦 bash/bc 数学..

我正在尝试通过 rclone 将其移动到我的驱动器进行备份后打印备份的文件大小。所以我通过带有awk打印$ 1的rclone ls语句获得文件大小,效果很好。

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

因此,在我的打印代码中,我尝试将其除以1048576以将其转换为mb。这应该给我 1.9 mb。

然而$ expr 1993211 / 1048576 | bc -l

打印1

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

计算应1993211 / 1048576 = 1.90087413788

知道这里发生了什么吗?

那是因为它做整数除法。 做浮点除法,你可以运行:

bc -l <<< '1993211 / 1048576'

返回:1.90087413787841796875

或者,您可以使用小数位数设置小数:

bc -l <<< 'scale=5; 1993211 / 1048576'

返回:1.90087

在命令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

相关内容

  • 没有找到相关文章

最新更新