shell保留两位小数,急求

我试过用bc,但是我发现用echo配合bc之后,得到的是个字符串类型了,不是数字类型的,我无法再进行数学意义上的操作比如:a=$(echo"scale=2;$a/3000... 我试过用bc,但是我发现 用 echo 配合bc之后,得到的是个 字符串类型了,不是数字类型的,我无法再进行 数学意义上的操作
比如:
a=$(echo "scale = 2;$a / 30000 "|bc)
echo $a
b=0.8
c=`expr $a + $b`
echo $c
就会发现 再次加算的时候 报错了,
我想知道保留两位小数,但是得到的数据依然可以继续用作数学计算的方法
展开
 我来答
百度网友5311d79
推荐于2017-09-26 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3231万
展开全部

用 awk 计算,printf 格式化输出。

a=450
a=$(awk -v n=$a '{printf("%.2f", n/30000)}')
echo $a
更多追问追答
追问
我需要的不是输出方式,而是得到这样的a之后 依然可以进行数学计算,
你这样是能打印出小数的效果,但是a自身就不能再进行数学计算了

就没有a里面是小数 依然能进行数学逻辑运算的么
追答

expr本身不支持小数运算,因此这跟a是什么输出方式没关系。

你可以在awk里都一起完成的嘛,awk里面是C语法环境,支持小数运算。用bc运算也可。

a=450
b=0.8
c=$(awk -v n=$a -v m=$b '{print printf("%.2f", n/30000)+m}')
echo $c

你要中间数据的话,也可以都打印出来的。

熊公八公
2015-06-01 · TA获得超过233个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:182万
展开全部
`expr $a / 3000`
更多追问追答
追问
不逗行么,这个明显不行,
a=153
a=`expr $a / 1000`
b=847
b=`expr $b / 1000`
c=`expr $a + $b`
echo $a,$b,$c

永远都是输出0
追答
你这么除当然是零了。
计算过程是按照数字来算的,但153/1000确实是零。
你试试这么做 `expr $a / 1000.0`
++++++
上面错了
c=$(echo "$a / 1000.0"|bc)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式