加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 如何使bc处理科学数据(又名指数)符号?

发布时间:2020-12-15 19:32:55 所属栏目:安全 来源:网络整理
导读:bc不喜欢以科学符号表示的数字(又称指数符号)。 $ echo "3.1e1*2" | bc -l(standard_in) 1: parse error 但是我需要使用它来处理以这个符号表示的几个记录。有没有办法让bc了解指数符号?如果没有,我可以做些什么来将它们翻译成bc会理解的格式? 不幸的是,
bc不喜欢以科学符号表示的数字(又称指数符号)。
$ echo "3.1e1*2" | bc -l
(standard_in) 1: parse error

但是我需要使用它来处理以这个符号表示的几个记录。有没有办法让bc了解指数符号?如果没有,我可以做些什么来将它们翻译成bc会理解的格式?

不幸的是,bc不支持科学记数法。

但是,它可以被翻译成bc可以处理的格式,使用sed:
通过使用

value=`echo ${value} | sed -e 's/[eE]+*/*10^/'`

您可以用“* 10 ^”替换“e”(或“e”,如果指数为正),那么bc会及时了解。即使指数为负,或者数字随后乘以另一个功率,并且允许跟踪有效数字,这也是可行的。

编辑:感谢jwpat7和Paul Tomblin澄清sed语法的方面。

编辑:

正如奥马伊指出的那样,这也可以在纯粹的黑社会中完成。只需使用

value=${value/[eE]+*/*10^}

完成与上述完全相同的操作。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读