博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bc显示小数点前的0
阅读量:5863 次
发布时间:2019-06-19

本文共 1367 字,大约阅读时间需要 4 分钟。

bc是强大而常用的计算工具。不过在除法运算时,如果得到的结果值小于1,得到的小数前面的0不存。本篇提供几个常用小数点前缺0的解决方法。

[root@361way ~]# bcbc 1.06.95Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.This is free software with ABSOLUTELY NO WARRANTY.For details type `warranty'.scale=2; 1/3.33

打开bc进入交互模式,我们键入scale=2; 1/3 回车,看到结果0.33前的0没有---注意此处保留小数点人2位 scale=2不能少,少了结果为是0 。

解决方法如下:

#!/bin/bash#方法1res1=$(printf "%.2f" `echo "scale=2;1/3"|bc`)res2=$(printf "%.2f" `echo "scale=2;5/3"|bc`)#方法2#v=$(echo $big $small | awk '{ printf "%0.2f\n" ,$1/$2}')v1=$(echo 1 3 | awk '{ printf "%0.2f\n" ,$1/$2}')v2=$(echo 5 3 | awk '{ printf "%0.2f\n" ,$1/$2}')#方法3mem1=`echo "scale=2; a=1/3; if (length(a)==scale(a)) print 0;print a "|bc`mem2=`echo "scale=2; a=5/3; if (length(a)==scale(a)) print 0;print a "|bc`echo res1 is $res1echo res2 is $res2echo v1 is $v1echo v2 is $v2echo mem1 is $mem1echo mem2 is $mem2

这里提供了三种方法,其中第方法1、方法3使用的bc处理,方法2使用的awk处理。执行输出结果我们看下:

[root@361way shell]# sh bc_point_zero.shres1 is 0.33res2 is 1.66v1 is 0.33v2 is 1.67mem1 is 0.33mem2 is 1.66

三种方法我们可以看到,方法1、方法3对小数点后面的值不会四舍五入,而方法2(awk)方法使用printf 时会对小数点(浮点运算)的值四舍五入进位。所以浮点运行时还是建议使用awk处理。不过在取整数时,awk默认也是不会四舍五入的。

# echo 5 3 | awk '{ printf "%d\n" ,$1/$2}'1# echo 5 3 | awk '{ printf "%d\n" ,$1/$2+0.5}'2# echo 4 3 | awk '{ printf "%d\n" ,$1/$2+0.5}'1

awk在取整数运算时,是需要加0.5进行进位的。

转载于:https://www.cnblogs.com/muahao/p/6599891.html

你可能感兴趣的文章
常用Java API
查看>>
我的友情链接
查看>>
ELK实战之logstash收集日志写入redis
查看>>
在vmware esxi6.5中将硬盘驱动类型由HDD变为SSD类型
查看>>
微信JS-SDK2015年升级分享到朋友圈接口限制
查看>>
我的友情链接
查看>>
Oracle GoldenGate studio 12.3.1.3的登录
查看>>
Spark+Docker的集群模式
查看>>
Lvs负载均衡的配置
查看>>
十一、流程控制之goto语句
查看>>
5款主流NoSQL数据库全方位横评
查看>>
linux之pam
查看>>
我的友情链接
查看>>
技术网站 --菜鸟教程
查看>>
游标定位:Cursor类
查看>>
现代搜索引擎
查看>>
java 抓取网站内容 异常code: 403
查看>>
Bootstrap 栅格系统简介
查看>>
瓜娃之走马观花 (3) - CharStreams和ByteStreams
查看>>
OC19归档
查看>>