首页 > 解决方案 > Bash 数学奇数(浮点除法)

问题描述

所以我在这里遇到了 bash / bc 数学问题。

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

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

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

然而, $ expr 1993211 / 1048576 | bc -l

印刷1

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

计算应该是1993211 / 1048576 = 1.90087413788

知道这里发生了什么吗?

标签: bashmathbcexpr

解决方案


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

bc -l <<< '1993211 / 1048576'

返回:1.90087413787841796875

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

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

返回:1.90087


推荐阅读