shell保留两位小数,急求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell保留两位小数,急求相关的知识,希望对你有一定的参考价值。
我试过用bc,但是我发现 用 echo 配合bc之后,得到的是个 字符串类型了,不是数字类型的,我无法再进行 数学意义上的操作
比如:
a=$(echo "scale = 2;$a / 30000 "|bc)
echo $a
b=0.8
c=`expr $a + $b`
echo $c
就会发现 再次加算的时候 报错了,
我想知道保留两位小数,但是得到的数据依然可以继续用作数学计算的方法
用 awk 计算,printf 格式化输出。
a=450a=$(awk -v n=$a 'printf("%.2f", n/30000)')
echo $a追问
我需要的不是输出方式,而是得到这样的a之后 依然可以进行数学计算,
你这样是能打印出小数的效果,但是a自身就不能再进行数学计算了
就没有a里面是小数 依然能进行数学逻辑运算的么
expr本身不支持小数运算,因此这跟a是什么输出方式没关系。
你可以在awk里都一起完成的嘛,awk里面是C语法环境,支持小数运算。用bc运算也可。
a=450b=0.8
c=$(awk -v n=$a -v m=$b 'print printf("%.2f", n/30000)+m')
echo $c
你要中间数据的话,也可以都打印出来的。
追问好深奥的样子,先拿来研究
参考技术A `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)
我的目的是 得到的 小数 能用作 数学函数 使用,并不是 能打印出 小数的效果
如何将数值四舍五入后保留两位小数点
参考技术A 一个double或者float变量x四舍五入取整,可以(int)(x+0.5);同理,如果要保留小数点后两位
(int)(100*x+0.5)
*
0.01
;
以上是关于shell保留两位小数,急求的主要内容,如果未能解决你的问题,请参考以下文章