bc显示小数点前的0
发布日期:2021-08-21 13:17:36 浏览次数:27 分类:技术文章

本文共 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

转载地址:https://blog.csdn.net/weixin_33720078/article/details/93632627 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Redis 配置文件杂项。
下一篇:[知识点]C++中STL容器之set

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月19日 02时13分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

matlab 函数 向量参数,Scipy integrate(quad,quadration,nquad)不能集成向量参数化函数?等效函数(MATLAB works)... 2019-04-21
arduino如何调用mysql,【 实测可用 】Arduino 直接访问 mysql 2019-04-21
php数据库结构对比 微擎,禾匠数据库对比–微擎通用各类数据库结构对比教程... 2019-04-21
mitproxy php,orion-c 2019-04-21
oracle外部表ora29913,从外部表中选择sqlplus错误:ORA-29913:执行ODCIEXTTABLEOPEN标注时出错... 2021-06-24
oracle负载均衡方案,Oracle负载均衡配置代码 2021-06-24
html语言放到数据库中,怎样把输入的文本转换成html代码存入数据库啊 2021-06-24
html描述列表在线实例,HTML的列表标签 2021-06-24
mysql 允许网络连接_MySQL 权限问题 允许所有网络的连接 2021-06-24
mysql查询服务器_MySQL查询执行 2021-06-24
oracle和mysql空字符串_Oracle中Null与空字符串' '的区别 2021-06-24
android webview静态方法,在android webview中加载静态页面 2021-06-24
Android网络期末考,Android 面试之「网络基础篇」 2021-06-24
html如何修改按钮样式,css怎么设置按钮样式? 2021-06-24
nextcloud如何填写数据库_OMV利用Docker配置nextcloud,实现个人网盘的搭建! 2021-06-24
点击定位到指定位置_使用Word书签功能轻松定位到指定位置或某个特定内容 2021-06-24
图像控制点 形变_几何校正中控制点的选取.doc 2021-06-24
cpu超线程优缺点_今天看了下百度百科!看到了超线程的优缺点啊!转! 2021-06-24
python2和3安装后怎样切换 mac_Mac下安装配置Python2和Python3并相互切换使用 2021-06-24
python错误代码40035_python-(matplotlib.pyplot)散点图轴的顺序错误 2021-06-24