Bash数学奇数(浮点除法)
所以我在bash/bc数学方面遇到了一些问题 在通过rclone将备份文件移动到我的gdrive进行备份后,我正在尝试打印备份文件的大小。因此,我通过一个rclone ls语句和awk print$1获得文件大小,这非常有效 在我的具体示例中,我得到值1993211(字节) 所以在我的打印代码中,我尝试将它除以1048576,得到mb。这应该给我1.9MB 但是,,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),我
$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
这个问题可能有用这个问题可能有用