【发布时间】:2013-04-03 17:35:01
【问题描述】:
#! /bin/sh
a1=260
a2=9150
echo "$a1 * 100 / $a2" | bc
输出是
2
它应该在哪里
2.8415
为什么我使用 bc 会丢失精度?
【问题讨论】:
#! /bin/sh
a1=260
a2=9150
echo "$a1 * 100 / $a2" | bc
输出是
2
它应该在哪里
2.8415
为什么我使用 bc 会丢失精度?
【问题讨论】:
试试这个(易于重复使用,您只需要记住在数学表达式前面加上scale=N):
$ echo "scale=10; $a1 * 100 / $a2" | bc
2.8415300546
如您所见,您可以根据需要指定刻度长度。
见
man bc | less +/^' *scale \(\s*exp
【讨论】:
可以加载数学库:bc -l
#! /bin/sh
a1=260
a2=9150
echo "$a1 * 100 / $a2" | bc -l
输出是
2.84153005464480874316
【讨论】:
您可以使用 awk 获得更好的算术:
awk -v a1=260 -v a2=9150 'BEGIN{printf("%.4f\n", (a1 * 100 / a2))}'
输出: 2.8415
【讨论】:
bc 是专为数学设计的,我没有看到任何相关点 awk 会更好,而且,他已经使用了 bc
awk is better than bc 我刚刚提出了另一个选项来执行标准bash 中不可用的浮点运算(bc 也是一个外部工具)。