返回顶部
首页 > 资讯 > 操作系统 >Linux下科学计数法(e)转化为数字的方法
  • 128
分享到

Linux下科学计数法(e)转化为数字的方法

Linuxe转化为数字Linux科学计数法转化为数字 2022-06-03 14:06:01 128人浏览 泡泡鱼
摘要

科学计数法使用e标识数值,将科学计算学转化为数字的思路:按e右边的数字移动小数点位数。e右边的数字如果是负数,则向左移动小数点。示例如下: 1.2345678e2 = 123.45678 1.2345678e-2

科学计数法使用e标识数值,将科学计算学转化为数字的思路:按e右边的数字移动小数点位数。e右边的数字如果是负数,则向左移动小数点。示例如下:


1.2345678e2 = 123.45678
1.2345678e-2 = 0.012345678
1.7615562e+06 = 1761556.2
1.87982e7 = 18798200
1e3 = 1000

那么在shell中,如何转化科学计数法为数字呢,方法如下:这里以"1.7615562e+06" (或者1.7615562e6)为示例:


[root@kevin ~]# echo "1.7615562e6"| gawk '$1=strtonum($1)'
1.76156e+06

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


[root@kevin ~]# printf "%f" 1.7615569e+06
1761556.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 $a
2
 
这种方法没法解决浮点数运算的精度问题,如下几种浮点数计算情况就傻X了!
[root@kevin ~]# a=`echo 1+1 | bc`
[root@kevin ~]# echo $a
2
[root@kevin ~]# b=`echo "1.2*1.2" | bc`
[root@kevin ~]# echo $b
1.4
[root@kevin ~]# c=`echo "5.0/3.0" | bc`
[root@kevin ~]# echo $c
1
[root@kevin ~]# d=`echo "scale=2;5.0/3.0" | bc`
[root@kevin ~]# echo $d
1.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 $a
1+1
[root@kevin ~]# a=`expr 1 + 1`
[root@kevin ~]# echo $a
2
[root@kevin ~]# b=`expr 10 / 2`
[root@kevin ~]# echo $b
5
 
3)$(())方法
同expr,不支持浮点数运算
[root@kevin ~]# a=$((1+1))
[root@kevin ~]# echo $a
2
[root@kevin ~]# b=$((1 + 3 ))
[root@kevin ~]# echo $b
4
 
4)let方法
不支持浮点数运算,而且不支持直接输出,只能赋值
[root@kevin ~]# let a=1+1
[root@kevin ~]# echo $a
2
[root@kevin ~]# let b=50/5
[root@kevin ~]# echo $b
10
[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 $a
0.5
 
控制精度:
[root@kevin ~]# b=`echo | awk '{printf("%.2f",1.0/2.0)}'`
[root@kevin ~]# echo $b
0.50
 
传递参数:
[root@kevin ~]# c=`echo | awk -v a=1 -v b=3 '{printf("%.4f",a/b)}'`
[root@kevin ~]# echo $c
0.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%

综合来看,还是awk的方法最靠谱,其他的方式都有相应问题。所以推荐在日常维护场景下使用awk来搞数学计算。

到此这篇关于Linux下科学计数法(e)转化为数字的方法 的文章就介绍到这了,更多相关Linux e转化为数字内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Linux下科学计数法(e)转化为数字的方法

本文链接: https://lsjlt.com/news/11466.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux下科学计数法(e)转化为数字的方法
    科学计数法使用e标识数值,将科学计算学转化为数字的思路:按e右边的数字移动小数点位数。e右边的数字如果是负数,则向左移动小数点。示例如下: 1.2345678e2 = 123.45678 1.2345678e-2...
    99+
    2022-06-03
    Linux e转化为数字 Linux科学计数法转化为数字
  • 怎么在Linux中金阿红科学计数法(e)转换为数字
    怎么在Linux中金阿红科学计数法(e)转换为数字?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一...
    99+
    2023-06-09
  • R语言-如何将科学计数法表示的数字转化为文本
    统赛B组我们选择了图书馆课题,获得了数据,一时兴起尝试处理了一下门禁的数据,遇到了一些问题,特此记下,方便以后查阅。 门禁数据分为两个变量,第一列为学号,第二列为进门时间,原本是Ex...
    99+
    2024-04-02
  • PHP怎么把科学计数格式转化为数字字符串
    这篇文章给大家分享的是有关PHP怎么把科学计数格式转化为数字字符串的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。科学计数格式转化为字符串将一个科学计数格式的数:1.2345678987654321e+30 转化为...
    99+
    2023-06-15
  • 优化 Python 数字输出——摆脱科学计数法
    优化 Python 数字输出——摆脱科学计数法 Python 是一门广泛应用的编程语言,很多时候我们需要对数字进行处理并输出到控制台或文件中。然而,在处理大量数字时,Python 默认使用科学计数法来...
    99+
    2023-09-09
    python numpy 开发语言
  • 将BigDecimal转成字符串为科学计数法的踩坑记录
    目录BigDecimal转字符串为科学计数法踩坑场景解决案例演示BigDecimal变科学计数法BigDecimal转字符串为科学计数法踩坑 场景 在开发工程中,在金额方面都会定义b...
    99+
    2024-04-02
  • Golang科学计数法转换string数字输出的实现
    目录1、问题 2、问题修复 3、总结 1、问题 最近接手一个商城运单号模块,接手后发现有部分运单号返回给前端是按照科学计数法的方式返回,如:8.0497183772403904E+...
    99+
    2024-04-02
  • php将科学计算转换为字符串并参与计算的方法
    这篇文章主要介绍了php将科学计算转换为字符串并参与计算的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先看这段代码, PHP 数字超过一定长度时,会自动转换为 科学计...
    99+
    2023-06-08
  • Go - 按科学计数法计算的倍数
    Golang不知道大家是否熟悉?今天我将给大家介绍《Go - 按科学计数法计算的倍数》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出...
    99+
    2024-04-05
  • php将数组转化为字符串的方法
    这篇文章给大家分享的是有关php将数组转化为字符串的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php将数组转化为字符串的方法:首先创建一个PHP示例文件;然后定义一个数组;最后通过“implode(&qu...
    99+
    2023-06-08
  • python字符串转化为数字的方法是什么
    Python中可以使用`int()`函数将字符串转化为整数。例如:```pythonnum_str = "123"num = int...
    99+
    2023-09-25
    python
  • 怎么在R语言中为数值取消科学计数法
    本篇文章给大家分享的是有关怎么在R语言中为数值取消科学计数法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。>#取消科学计数法>options(scipen ...
    99+
    2023-06-14
  • 学习python将中文数字转化成阿拉伯数字的方法
    这篇文章将为大家详细讲解有关学习python将中文数字转化成阿拉伯数字的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python将中文数字转化成阿拉伯数字正则表达式提取文本中的数字中文转化成阿拉伯数...
    99+
    2023-06-08
  • php将数字字符串转为数组的方法
    这篇文章主要介绍了php将数字字符串转为数组的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。转换方法:1、使用explode()将字符串按特定的分隔符分割成若干个子串,然...
    99+
    2023-06-06
  • javascript将字符串转为数字的方法
    本篇内容主要讲解“javascript将字符串转为数字的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript将字符串转为数字的方法”吧!将字符...
    99+
    2024-04-02
  • javascript数字转换为字符串的方法
    本篇内容介绍了“javascript数字转换为字符串的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!转...
    99+
    2024-04-02
  • php字符串转换为数字的方法
    php字符串转换为数字的方法:1、在sublime_text软件中新建一个php文件。2、编写php网页结构(<php>)。3、声明php网页和浏览器交互的文件类型和编码。4、定义字符串变量,。5、使用var_dump()输出变...
    99+
    2024-04-02
  • Python中如何正确地使用科学计数法显示数字?
    Python中如何正确地使用科学计数法显示数字? 在数据分析和科学计算时,我们经常会遇到非常大或非常小的数字。默认情况下,Python会使用科学计数法来显示这些数字,例如1e+08和1e-06。虽然这...
    99+
    2023-09-08
    python 数据分析 开发语言
  • linux下wc统计文件的个数、行数、字数、字节数等信息方法
    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。 1.命令格式: wc [选项]文件… 2.命令功能: 统计指定文件中的字节数、字数、...
    99+
    2022-06-04
    字节 个数 行数
  • php将数组转化为json的方法
    这篇文章主要介绍php将数组转化为json的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php将数组转化为json的方法:首先创建一个PHP示例文件;然后定义一个数组;最后通过“json_encode”函数将指...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作