星期三, 七月 18, 2007

UNIX bc的小数除法

这个东东整了我大半天的时间。。。

因为前面的代码算出一个TotalTime的结果是个科学计数法1.23456e+08这样的东东,在windows的MKS下只要简单的用

AverageTime=`expr $TotalTime / $total_num`

就ok了。

搬到UNIX服务器下跑就报expr expect a integer

 

开始是以为分子必须为整数,就搜出来一个方法,用bc控制分子的精度

AverageTime=`echo "scale=0;$TotalTime/$total_num"|bc'   //这个对于分子是小数点的情况还是好使的:)

这个方法在UNIX命令行直接跑能赋值,但是echo $AverageTime就会报Syntex Error in line1,

 

代入数字,一行行跑:

AverageTime=`echo "scale=2;$2.5/$2"|bc'

echo $AverageTime

能得出1

 

然后找Jason帮我调了调,到代人

AverageTime=`echo "scale=1.23456e+08;$2.5/$2"|bc'

同样报出Syntex Error in line1,

 

最后一顿狂搜,快下班的时候终于让我找到打印命令,开始用%d,说无法转换,想起来以前C的时候也用一样的格式符,就试了%.0f,搞定~

AverageTime=`expr $TotalTime / $total_num`

没有评论: