文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么在Linux中金阿红科学计数法(e)转换为数字

2023-06-09 12:30

关注

怎么在Linux中金阿红科学计数法(e)转换为数字?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

什么是Linux系统

Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。

1)科学计数法转为十进制

[root@kevin ~]# printf "%f" 1.7615569e+061761556.900000 [root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%f",$0)}' 1761556.900000 [root@kevin ~]# echo "1.7615569e+03"| awk '{printf("%f",$0)}'1761.556900 [root@kevin ~]# echo "1.7615569e+04"| awk '{printf("%f",$0)}'17615.569000 [root@kevin ~]# echo "1.7615569e-6"| awk '{printf("%f",$0)}'0.000002 [root@kevin ~]# echo "1.7615569e-4"| awk '{printf("%f",$0)}'0.000176 [root@kevin ~]# echo "1.7615569e-3"| awk '{printf("%f",$0)}'0.001762 [root@kevin ~]# echo "1.7615569e-2"| awk '{printf("%f",$0)}'0.017616

需要注意: 这种方法,转化结果中小数点后面都保留6位:
1)e后面的数字若是正数,则小数点后面要保留6位,不够的话,用0补上。
2)e后面的数字若是负数,则小数点后面要保留6位,多的话,此时按照四舍五入,保留6位。

2)科学计数法转为十进制并保留两位小数

[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%.2f",$0)}'  1761556.90

保留三位小数

[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%.3f",$0)}'  1761556.900

3)科学计数法转为十进制并取整

[root@kevin ~]# echo "1.7615569e+06"|awk '{printf("%d",$0)}' 1761556 [root@kevin ~]# echo "1.7615569e3"|awk '{printf("%d",$0)}'  1761 [root@kevin ~]# echo "1.7615569e02"|awk '{printf("%d",$0)}' 176

4)科学计数法转十进制并四舍五入取整

[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%d",$0+0.5)}' 1761557 [root@kevin ~]# echo "1.7615563e+06"| awk '{printf("%d",$0+0.5)}' 1761556

5)如何将小数点后无用的0去掉, 可以参考: 日常运维的Shell脚本中截取字符串的做法,即用变量扩展的方式

[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%f",$0)}'1761556.900000 [root@kevin ~]# var=$(echo "1.7615569e+06"| awk '{printf("%f",$0)}')[root@kevin ~]# echo ${var%%0*}1761556.9

或者使用sed方法也可以

[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%f",$0)}'   1761556.900000 [root@kevin ~]# var=$(echo "1.7615569e+06"| awk '{printf("%f",$0)}')[root@kevin ~]# echo "$var"|sed 's/0*$//'1761556.9 [root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%f",$0)}'| sed 's/0*$//'1761556.9

6)sed去除掉小数点之后的字符

[root@kevin ~]# echo "kevin.123"|sed "s/\.*//g"kevin123 \..*代表了小数点之后的1到多个[root@kevin ~]# echo "kevin.123"|sed "s/\..*//g"kevin  [root@kevin ~]# echo "kevin_123"|sed "s/\_*//g"kevin123 [root@kevin ~]# echo "kevin_123"|sed "s/\_.*//g"kevin

命令解释:
*代表0到多个。故\.*只能替换掉小数点变成空。\_*同理。
.*代表1到多个。故\..*将小数点后的全部去掉了。\_.*同理。

7)shell中的数字计算说明

 1)bc方法bc是比较常用的linux计算工具了,而且支持浮点运算:[root@kevin ~]# a=`echo 1+1 | bc`[root@kevin ~]# echo $a2 这种方法没法解决浮点数运算的精度问题,如下几种浮点数计算情况就傻X了![root@kevin ~]# a=`echo 1+1 | bc`[root@kevin ~]# echo $a2[root@kevin ~]# b=`echo "1.2*1.2" | bc`[root@kevin ~]# echo $b1.4[root@kevin ~]# c=`echo "5.0/3.0" | bc`[root@kevin ~]# echo $c1[root@kevin ~]# d=`echo "scale=2;5.0/3.0" | bc`[root@kevin ~]# echo $d1.66[root@kevin ~]# e=`echo "scale=2;5.0/6.0" | bc`[root@kevin ~]# echo $e.83 2)expr方法不支持浮点数计算,这是个坑,而且要注意数字与运算符中的空格。[root@kevin ~]# a=`expr 1+1`[root@kevin ~]# echo $a1+1[root@kevin ~]# a=`expr 1 + 1`[root@kevin ~]# echo $a2[root@kevin ~]# b=`expr 10 / 2`[root@kevin ~]# echo $b5 3)$(())方法同expr,不支持浮点数运算[root@kevin ~]# a=$((1+1))[root@kevin ~]# echo $a2[root@kevin ~]# b=$((1 + 3 ))[root@kevin ~]# echo $b4 4)let方法不支持浮点数运算,而且不支持直接输出,只能赋值[root@kevin ~]# let a=1+1[root@kevin ~]# echo $a2[root@kevin ~]# let b=50/5[root@kevin ~]# echo $b10[root@kevin ~]# let c=1.2*2-bash: let: c=1.2*2: syntax error: invalid arithmetic operator (error token is ".2*2") 5)awk方法普通的运算:[root@kevin ~]# a=`echo | awk '{print 1.0/2.0}'`[root@kevin ~]# echo $a0.5 控制精度:[root@kevin ~]# b=`echo | awk '{printf("%.2f",1.0/2.0)}'`[root@kevin ~]# echo $b0.50 传递参数:[root@kevin ~]# c=`echo | awk -v a=1 -v b=3 '{printf("%.4f",a/b)}'`[root@kevin ~]# echo $c0.3333 awk结合BEGIN(小数点后面保留6位)[root@ss-server ~]# awk 'BEGIN{printf "%.2f%%\n",(87/500)*100}'17.40%[root@ss-server ~]# awk 'BEGIN{printf "%.2f%%\n",(100/300)*100}'33.33%

看完上述内容,你们掌握怎么在Linux中金阿红科学计数法(e)转换为数字的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯