本质上,我正在运行一个脚本,该脚本从其他文件中获取一堆数字,并以有用的方式将它们组合在一起。
它目前运行良好,但它正在打印它正在抓取的数字中的每一个数字(grepping?这是一个词吗?),我想更早地对其进行四舍五入。
主要思想的一个例子是:
var1=$(grep.....)
echo $var1 >> output.dat
但这给了我类似 1.235215233462345345362 的东西,我想要更少的数字。
奖金问题:
返回的一些数字采用科学记数法。有什么办法可以改变这种情况吗?
ssh腻子
发行商 ID:RedHatEnterpriseServer 描述:Red Hat Enterprise Linux Server 版本 6.5(圣地亚哥) 版本:6.5 代号:圣地亚哥
答案1
使用 printf 而不是 echo :
$ echo "$a"
1.235215233462345345362
$ LC_ALL=C printf '%.1f\n' "$a"
1.2
$ LC_ALL=C printf '%.3f\n' "$a"
1.235
(LC_ALL=C
是为了确保小数点始终.
(在输入和输出上),无论用户的区域设置如何(可能在哪里,
))。